상태(State)를 가지지 않는 위젯을 구성하는 기본 클래스. 상태를 가지지 않는다는 것은 한 번 그려진 후 다시 그리지 않는 경우이다.
StatelessWidget 클래스는 build() 메서드를 가지고 있다. build() 메서드는 위젯을 생성할 때 호출되는데, 실제로 화면에 그릴 위젯을 작성해 반환한다.
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
title, theme, home 프로퍼티를 설정하여 위젯의 속성을 표현한다.
title: 제목
theme: 테마
home: 실제로 앱이 표시하는 위젯
상태(State)가 있는 위젯을 정의할 때 사용하는 클래스.
class MyHomePage extends Statefulwidget {
MyHomePage({Key key, this.title}) : super(key: key); //(1)
final String title;
@override
_MyHomePageState createState() => _MyHomePageState(); //(2)
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0; //변경 가능한 상태 (3)
...
@override
Widget build(BuildContext context) { //(4)
return Scaffold(...)
}
}
(1): MyHomePage 클래스의 생성자는 key와 title 프로퍼티를 옵션으로 받아서 super 키워드로 부모 클래스의 생성자에 key를 전달한다.
(2): 상속받은 createState() 메서드를 재정의하여 _MyHomePageState 클래스의 인스턴스를 반환한다. StatefulWidget이 생성될 때 한 번만 실행된다.
(3): State 클래스를 상속받은 클래스를 상태 클래스라고 한다. 상태 클래스는 변경 가능한 상태를 프로퍼티 변수로 표현한다.
(4): _MyHomePageState 클래스의 상태에 따라 화면에 그려질 코드를 작성한다.
머티리얼 디자인 앱을 만들 때 뼈대가 되는 위젯.