일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- python강좌
- 딥러닝공부
- feature scaling
- 머신러닝
- Gradient Descent
- Python강의
- 선형회귀
- 파이썬강의
- 백준 알고리즘
- 머신러닝 강의
- 지도학습
- acmicpc.net
- supervised learning
- c언어 오목
- 파이썬강좌
- 비지도학습
- 머신러닝공부
- 자바
- C언어
- 비용함수
- java
- 효묘블로그
- 인공지능
- 딥러닝
- unsupervised learning
- 머신러닝 강좌
- 자바강좌
- JAVA강좌
- 경사하강법
- 자바시작하기
Archives
- Today
- Total
컴공과컴맹효묘의블로그
[Flutter 기본 개념] 플러터 StatefulWidget에 대해서 본문
반응형
Widget이론
- Widget은 모두 “불변”의 법칙을 갖고 있다.
- 하지만 위젯의 값을 변경해야할 때가 있다.
- 변경이 필요하면 기존 위젯을 삭제해버리고 완전 새로운 위젯으로 대체한다.
마치 React의 State에 대한 Component Rendering같다.
StatelessWidget의 라이프 사이클(Life Cycle)
- Constructor로 생성이 되고 생성읻 되자마자 build함수가 실행됨
- 이전 Container예제와 마찬가지로 변경이 필요하면 새로운 위젯을 만들어버린다.
- 하나의 StatelessWidget은 라이프 사이클동안 단 한번만 build 함수를 실행한다.
StatefulWidget의 라이프 사이클
StatefulWidget또한 위젯이기 때문에 불변이다.
따라서 State를 이용하여 변화를 구현한다.
아무 것도 변경되지 않았을 때.
- dirty는 변경이 필요한 상태임.
- clean은 변경 이후의 상태임.
- 삭제할 때 deactivate가 호출 됨.
- 이후 dispose가 호출 됨.
파라미터가 바뀌었을 때. (생성자 파라미터)
- 새로운 Widget
- Contructor가 호출 됨
- createState가 아니라 기존 State를 찾고, binding함.
- (기존 clean) → didUpdateWidget → dirty → build
setState를 실행했을 때. (내부에서 실행)
- Widget 유지
- setState 실행
- dirty 실행
- build 실행
- clean 실행.
Dispose
StatefulWidget은 화면에서 사라질 때 dispose되어야 한다. 만약 화면에서 사라져도 State를 유지하고 싶다면, 상태관리패턴을 사용해야한다.
실습
StatefulWidget은 State와 세트이다.
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class HomeScreen extends StatefulWidget {
final Color color;
const HomeScreen({required this.color, Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return _HomeScreenState();
}
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Container(
width: 50.0,
height: 50.0,
color: widget.color, // State에 widget이라는 변수가 있음.
);
}
}
State에서 StatefulWidget의 변수를 사용하고 싶으면 widget
을 사용한다.
단축키
StatelessWidget에서 StatefulWidget으로 ShowContext(Alt+Enter
)를 이용하면 쉽게 변경이 가능함.
반응형
'컴퓨터 > Android Studio' 카테고리의 다른 글
Flutter GeneratedPluginRegistrant.java 에러. (0) | 2022.04.15 |
---|---|
Android- DrawerLayout (0) | 2022.03.09 |
Android- RecyclerView 라이브러리 (0) | 2022.03.05 |
Android- 액션바ActionBar와 툴바Toobar (0) | 2022.03.03 |
Android- 플랫폼API, 제트팩 라이브러리 (0) | 2022.03.03 |
Comments