위젯이라 함은 UI를 묘사하는 다트의 클래스로서, 화면에 나타날 요소를 결정하는 데이터와 설정이다. 플러터에서는 모든 요소가 전부 위젯이다.
각 위젯들을 Tree처럼 쌓아서 원하는 앱을 구현할 수 있다.
개인적으로 백엔드로써 이 부분이 가장 어렵다.. 위젯을 조립해서 앱의 한 화면을 그린다는게 굉장히 복잡하게 느껴진다.
노마드코더의 Flutter lecture를 듣고 있는데, 그 중 UI Challenge 강의에서 나오는 Widget들을 짚고 넘어가려고 한다.
상태를 관리할 필요가 없는 위젯. 위젯의 트리거 시점이 외부로부터 결정됨.
StatelessWidget을 상속하는 순간 build라는 메서드를 오버라이드해야하는데, 이는 위젯을 리턴하는 함수이다.
그리게 될 모든 하위 페이지나 구성요소를 최상단에서 담는 그릇
return MaterialApp(
home: Scaffold()
);
At least one of [home], [routes], [onGenerateRoute], or [builder] must be non-null.
앱의 최상위에서 주로 사용하며 전역적인 UI Layout을 구성하는데 사용한다.
발판이라는 뜻인데 찐으로 발판 역할을 해주는 것 같음. Title과 Button등 다양한 위젯을 넣을 수 있다.
자식을 하나만 갖는 스크롤 가능한 뷰
나의 경우엔 아래처럼 구성했었는데,
return MaterialApp(
home: Scaffold(
backgroundColor: const Color(0xFF181818),
body: SingleChildScrollView(
Scaffold body에 들어가는 모든 요소가 스크롤 가능해지는 것 같았다.
안쪽 여백을 표현할 때 사용하는 위젯이다.
여기서 EdgeInsets가 함께 사용되는데, 다음과 같다.
EdgeInsets.allEdgeInsets.onlyEdgeInsets.fromLTRBEdgeInsets.symmetricSingle-child layout widget의 일종이다. child가 없는 경우 페이지 내에서 가능한 최대한의 공간을 차지한다.
child를 변환하는 위젯을 만든다.
Transform.flipTransform.rotateTransform.scaleTransform.translate기본적으로 Text(String) 가장 많이 사용하며, TextStyle 위젯을 활용해 속성을 변경할 수 있다.