위젯은 플러터(Flutter) 프레임워크에서 모든 UI를 만들고 구성하는 기본 단위입니다.
플러터에서 위젯은 크게 두가지로 나눌 수 있습니다.
Stateless Widget
상태가 없는 위젯(정적임)
한번 생성되면 변화가 없다.
예) Text, Icon, Container, Image
내부에 상태가 있는 위젯(동적임)
사용자의 상호작용이나 데이터를 받을 때 의해 모양이 바뀝니다.
예) Button, Listview, 애니메이션, Text Field
플러터에서 위젯들을 tree구조로 정리할 수 있습니다.
한 위젯 내에 다른 위젯들을 포함시킬 수 있기에 위젯들은 서로 부모 자식 관계로 구성됩니다.
모든 플러터 애플리케이션은 최상위에 위젯을 가지고 있으며, 이 위젯은 앱의 루트 위젯이 됩니다.
이 루트 위젯은 일반적으로 MaterialApp 또는 CupertinoApp과 같은 위젯입니다.
MaterialApp이 애플리케이션의 루트 위젯입니다.
MyApp 클래스는 플러터(Flutter) 애플리케이션의 진입점이 되는 클래스이며, MaterialApp 위젯을 포함하고 있습니다.
애플리케이션의 진입점에서 MaterialApp을 생성하여 애플리케이션의 기본 구성을 정의하고, 그 아래에 필요한 화면이나 위젯을 구성합니다.
따라서 MaterialApp을 애플리케이션의 루트 위젯으로 간주합니다.
클래스는 객체 지향 프로그래밍에서 사용되는 개념으로, 객체를 생성하기 위한 템플릿이며, 객체의 상태와 동작을 정의합니다.