- 플러터는 화면에 그려지는 모든 요소가 위젯으로 구성 - 수십가지 기본 위젯을 제공하며 개발자가 직접 위젯을 만들 수도 있음 - 자주 사용하는 위젯 : 텍스트, 제스처, 디자인, 배치 - 위젯의 상태가 변경되면 변경 사항에 알맞게 변경된 UI를 화면에 다시 그려줌 -> 이때 플러터는 기존 상태의 위젯과 새로운 상태의 위젯을 비교해서 UI 변화를 반영할 때 필요한 최소한의 변경 사항을 산출해서 반영 -> 최소한의 리소스를 이용해서 UI 변경을 이끌어낼 수 있고, 최대 120FPS까지 높은 퍼포먼스를 발휘 할 수 있음.
ㅇ 위젯 플러터 공식 문서(위젯관련) : https://flutter-ko.dev/docs/development/ui/widgets 1. 자식을 하나만 갖는 위젯 - Container 위젯 -> 자식을 담는 컨테이너 역할. 배경색, 너비와 높이, 테두리 등의 디자인 지정 가능 - GestureDetector 위젯 -> 플러터에서 제공하는 제스처 기능을 자식 위젯에서 인식하는 위젯. -> 탭, 드래그, 더블클릭 같은 제스처 기능이 자식 위젯에서 인색됐을 때 함수를 실행할 수 있음 - SizedBox 위젯 -> 높이와 너비를 지정하는 위젯 -> Container위젯과 다르게 디자인적 요소 적용 할 수 없음 -> const 생성자로 선언할 수 있어서 퍼포먼스 측면에서 더 효율적
2. 자식을 여럿 갖는 위젯(매개변수를 입력받음, 리스트로 여러 위젯을 입력할 수 있음) - Column위젯 : children 매개변수에 입력된 모든 위젯들을 세로로 배치 - Row위젯 : children 매개변수에 입력된 모든 위젯들을 가로로 배치 - ListView위젯 : 리스트를 구현할 때 사용. children 매개변수에 다수의 위젯을 입력할 수 있음. 입력된 위젯이 화면 넘어가면 스크롤가능
3. 위젯 아래에 계속 위젯이 입력되는 형태로 '위젯 트리'를 구성하여 UI를 제작 -> 플러터 UI를 위젯 트리로 그릴 수 있어야 플러터 프로그래밍 가능
ㅇ Children와 Child의 차이점 - child 매개변수와 children 매개변수는 위젯에 하위 위젯을 추가할 때 사용 - child : 위젯 하나만 추가 - children : 위젯 여럿 추가 - 대부분의 위젯은 child 또는 children 매개변수를 하나만 제공 - child, children를 동시에 입력받는 위젯은 존재하지 않음