일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JPA스터디
- 카프카
- JPA공부
- 스프링부트공부
- 스프링부트
- nestjs
- 기술공부
- 코테준비
- querydsl
- nestjs스터디
- JPA예제
- 기술면접공부
- K8S
- 알고리즘공부
- 자바공부
- 프로그래머스
- DDD
- Axon framework
- 코테공부
- 스프링공부
- Kafka
- 스프링
- 플러터 개발
- JPA
- 플러터 공부
- JPA 공부
- 스프링 공부
- 자료구조공부
- Flutter
- nestjs공부
- Today
- Total
DevBoi
[Flutter] 샘플 프로젝트 분석 본문
플러터 프로젝트를 시작하면 아래와 같다.
카운터 어플리케이션 및 주석이 달려있다.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
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.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
주석을 지우고, 해당 소스는 위와 같다.
void main() 안에 runApp()으로 MyApp을 불러온다.
StatelessWidget안에 들어가는 내용은 제목,테마,이름이다.
쉽게 얘기하면 해당 내용은 앱에서 변경되지 않으므로 StatelessWidget을 상속 받는다.
해당 플러스 버튼을 누르게 되면, 숫자가 변경되고 사용자에게 보여주기 떄문에 Statefulwidget을 상속 받는다고 이해하면 된다.
StateFulwidget은 변경되는 부분을 위해 자신을 State를 담아서 관리한다.
@override
State<MyHomePage> createState() => _MyHomePageState();
해당 소스는 State로 StatefulWIdget을 감싸서, createState()라는 스테이트를 만든다라는 의미이다.
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
위의 소스를 보면, State<MyHomePage>를 상속받은 클래스가 있다.
그리고 setState()라는 함수가 있는데, 이는 State가변경되고 이를 알려서 해당 변화정보를 반영되게끔 해주는 메소드이다.
따라서, 해당 메소드를 제외한다면? 변경이 반영되지 않는다.
@override
Widget build(BuildContext context) {
해당 메소드도 중요하다.
해당 메소드는 위젯들을 빌드하는 메소드이다.
return Scaffold(
appBar: AppBar(
또한 해당 Scaffold를 리턴하는데, 해당 Scaffold는 Statefulwidget이 가지는 State를
이루게 하는 위젯들을 감싸는 폴드이다.
해당 제목에 대한 내용을 선언할 수 있는데, 해당 Title은 아까 Required로 전달 받아 생성된 변수값이다.
title: Text(widget.title),
기타 컬럼에 대한 속성값들, 그리고 하위 위젯에 대해서는 좀 더 차차 공부해보도록 하자.
'[Mobile] > [Flutter]' 카테고리의 다른 글
[Flutter] 간단한 로그인 화면 (0) | 2023.07.11 |
---|---|
[Flutter] 화면 구성 위젯 이해하기 (0) | 2023.07.11 |
[Flutter] 계층 구조 이해하기 (0) | 2023.07.11 |
[Flutter] 애증의 플러터에 FCM 붙여보기 (0) | 2023.06.23 |
[Flutter] Boot pay로 정기 결제 구현하기 (0) | 2023.06.10 |