화면을 갱신 할 필요가 없는 정적인 화면을 구성할 때에는 Stateless Widget을,
특정한 상황에 따라 화면을 갱신할 필요가 있다면 Stateful Widget을 사용한다.
Stateful widget은 state객체를 하나 가지고있다.
잘 쓰지 않는 부분에 콘텐츠가 위치하지 않도록 하는 위젯
이 기능을 사용하면 JIT 컴파일러를 활용하여, 앱을 시간이 오래 걸리는 컴파일 과정을 거치지 않고서도 코드의 변경 사항을 즉시 반영할 수 있다.
Hot restart는 말 그대로 앱을 재시작하는 형태이다. 이 기능을 활용할 시, 앱의 모든 상태가 초기화되고, 앱의 코드 변경 사항을 반영할 수 있게 된다.
Hot reload는 hot restart와는 달리 앱을 재실행하지는 않지만, 코드의 변경 사항을 반영하는 기능이다. 이 기능을 활용할 시, 앱의 상태를 유지한 상태로, 코드의 수정사항을 확인하여 더욱 빠른 개발을 할 수 있게 해준다.
앱을 재 컴파일 후 빌드하는 것이 아니기 때문에, 앱의 기초가 되는 네이티브 코드의 수정이나, 라이브러리나 Asset의 추가 등의 상황에는 정상적으로 작동되지 않는다. 또한 지나치게 많은 코드의 변경사항이 있을 경우 Reload/Restart 순으로 실행중인 프로세스가 상위 재시동을 요청할 수 있으며, 특히 추후 상태를 관리하는 개발 단계에 도달하게 된다면, 해당 기능을 사용할 때 주의를 요하게 될 수도 있다.
width,height, color, child, padding, margin, decoration 의 하위 요소를 가지고 있다.
width: double.infinity 를 하게 되면 핸드폰 가로 길이를 끝까지 채울 수 있다.
decoraion: BoxDecoration을 사용했을 때 외부에 Color가 선언 되어있으면 에러가 난다. 내부로 옮겨줘야 한다. BoxDecoration의 하위요소로는 borderRadius, color, border 등이 있다.
이 위치에 어떤 위젯이 올거니까 그 사이즈만큼 자리를 차지해라 라는 위젯
스크롤 위젯
가로 스크롤을 하려면 scrollDirection: Axis.horizontal 객체를 넣어주면됨.
플러터는 제일 마지막에 child 객체를 두도록 권장함.
위젯 위에 위젯을 쌓아올릴 때 쓰는 위젯
옵션으로는 top, bottom, left, right 가 있음
Positioned 처럼 상세한 좌표를 알기 어려울 때에는 Align 위젯을 사용하면 좋다. alignment라는 옵션이 있음
크기의 제약조건을 설정해줄 수 있는 위젯이다.
constraints: BoxConstraints()
의 옵션으로는 minHeight, minWidth, maxHeight, maxWidth, tight, loose 가 있다.
부모의 제약조건을 따르지 않는 위젯
오버플로우가 발생하더라도 제한된 영역안에서만 이루어지도록 잡아주는 위젯
padding: EdgeInsets.all() 같은 형식으로 사용한다.