위젯이라 함은 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.all
EdgeInsets.only
EdgeInsets.fromLTRB
EdgeInsets.symmetric
Single-child layout widget의 일종이다. child가 없는 경우 페이지 내에서 가능한 최대한의 공간을 차지한다.
child를 변환하는 위젯을 만든다.
Transform.flip
Transform.rotate
Transform.scale
Transform.translate
기본적으로 Text(String)
가장 많이 사용하며, TextStyle
위젯을 활용해 속성을 변경할 수 있다.