ex20. Lambda

2024. 6. 13. 09:56Flutter

✅ 새롭게 사용할 Widget

✅ State란?

✅ State의 종류

✅ Stateless와 Stateful Widget

✅ Widget의 Tree 구조 이해

✅ Widget의 Tree 구조 이해

  • 역할
void main() { // ctrl + shift +F10 : 실행

  print(test());
  test2('flutter');

}

// 람다식(Lambda) 메소드 : 메소드가 1줄일 경우 사용할 수 있는 메소드

// test() 메소드의 구조
// 리턴 타입 : int형
// 매개변수 : X
int test() => 10;
// public int test() {
//   return 10;
// } 과 같은 의미

// 리턴타입 : X
// 매개변수 : O
void test2(data) => print('$data 출력');
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'), // title을 입력해 줘야함
    );
  }
}

// stf -> Stateful 위젯 불러오기
class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title}); // title을 무조건 required 해야 함

  final String title; // 입력받은 title은 이곳에서 저장

  @override
  State<MyHomePage> createState() => _MyHomePageState();
  // createState() : 메소드의 이름 / 람다식으로 작성되어 있음!
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

 

'Flutter' 카테고리의 다른 글

ex22. abstract  (0) 2024.06.13
ex21. inheritance  (0) 2024.06.13
ex19. Widget 종합 실습  (0) 2024.06.13
ex18. AppBar  (0) 2024.06.13
ex17. Icon  (0) 2024.06.13