firebase의 realtimedatabase를 쓸 예정이므로 key-value 구조로 대략 구조를 짜봤다.
플러터는 React에서 영감을 얻어 위젯으로 UI를 구축한다.
플러터는 모든 요소가 위젯이다.
내가 네이티브 개발을 할때 activity안에 있는 text와 button 같은것들을 위젯이라고 불렀지만 플러터에서는fragment나 Activity 같은 개념 대신 비슷한 것으로 Route(스크린이나 페이지를 추상화한것)라는 개념이 있다고 한다. 그리고 이를 관리하는 것이 Navigator이다. (stack처럼 LIFO) 아무튼 이것들 조차 위젯이다.
공식문서에서 친절하게도 기존 Android 개발자를 위해 공식 doc을 만들어주셨다. ios 개발자, 웹개발자를 위한 문서들도 있으니 참고해보시길!
Android 개발자를 위한 Flutter
일단 flutter는 runApp() 함수를 사용하여 inflate되어 화면에 attatch 된다. runApp() 함수는 주어진 값을 가져와 위젯트리의 루트로 만든다. (위젯트리를 바탕으로 화면이 그려진다)
위젯은 상태를 관리하는지 여부에따라 statelesswidget과 statefulwidget 두가지로 나누어진다. state(=data)
그들의 lifetime동안 여러번 다르게 빌드 될수 있는 위젯을 위한 위젯
(1) createState() : 상태를 생성 State 객체를 리턴
(2) initState() : 위젯이 생성될때 초기화
(3) build() : 위젯을 화면에 출력
(4) setState() : 위젯 state 값 갱신 -> 다시 build
특정 구성 및 주변 상태가 주어지면 항상 동일한 방식으로 빌드하는 위젯을 위한것
상태관리가 필요없음. 사용자와 상호작용하지 않음