Stateless 위젯은 화면 표시용 위젯이다.
위젯이 로딩되어 화면에 표시된 이후에는 사용자 이벤트나 동작이 있어도 내용을 변경할 수 없습니다.
import 'package:flutter/material.dart';
void main()=>runApp(MaterialApp(
title: 'Learn Stateless Widget',
home: Scaffold(
appBar: AppBar(title: Text('Stateless widget'),),
body: _FirstStatelessWidget(),
),
));
class _FirstStatelessWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Text('stateless 위젯');
}
}
body: _FirstStatelessWidget()
body속성에 _FirstStatelessWidget 위젯을 생성
class _FirstStatelessWidget extends StatelessWidget
_FirstStatelessWidget 클래스는 StatelessWidget 클래스를 상속
Stateful 위젯은 버튼을 누르거나 터치했을 때 화면에 변경된 내용을 표시할 수 있습니다.
플러터는 최대한 고정부와 변동부를 구별하도록 설계되어 있습니다.
import 'package:flutter/material.dart';
void main()=>runApp(MaterialApp(
title: 'Learn Stateless Widget',
home: Scaffold(
appBar: AppBar(title: Text('Stateless widget'),),
body: _FirstStatefulWidget(),
),
));
class _FirstStatefulWidget extends StatefulWidget {
State createState() => _FirstStatefulWidgetState();
}
class _FirstStatefulWidgetState extends State<_FirstStatefulWidget> {
Widget build(BuildContext context) {
return Text('stateful 위젯');
}
}
createState()
상태를 생성.
플러터가 StatefulWidget을 빌드하도록 지시하면 즉시 createState()가 호출된다.
이 메서드는 반드시 존재해야 한다.
mounted 변수가 true가 됨
화면에 위젯이 부착된 상태
initState()
위젯이 생성될때 처음으로 호출되는 메서드.
생성된 위젯 인스턴스의 BuildContext에 의존적인 것들의 데이터 초기화
동일 위젯트리내에 부모위젯에 의존하는 속성 초기화
Stream 구독, 알림변경, 또는 위젯의 데이터를 변경할 수 있는 다른 객체 핸들링.
didChangeDependencies
상태 객체의 의존성이 변경되면 호출
build()
위젯을 화면에 표시하는 메서드
화면에 표시할 위젯을 반환 해야한다
didUpdateWidget()
위젯의 설정이 변경될 때 호출됨
setState()
위젯의 상태를 갱신
이 메서드를 실행하면 위젯을 처음부터 다시 만들지만 initState() 메서드는 호출되지 않음
데이터가 변경되었음을 프레임워크에 알리는데 사용되며 build context의 위젯을 다시 빌드하게 함
deactivate()
상태 객체가 위젯 트리에서 제거됨.
경우에 따라 다시 위젯 트리에 추가될 수도 있음
dispose()
상태 객체가 위젯 트리에서 완전히 제거됨
이 메서드가 호출되면 상태 객체는 더 이상 재사용할 수 없음
mounted가 false로 설정됨
최종적으로 위젯이 화면에서 탈착됨