Flutter
NavigationRail 및 LayoutBuilder 위젯
Dean83
2023. 3. 24. 15:37
플러터에는 많은 위젯들이 있다. 해당 위젯들을 얼마나 아는가 가 실력의 한 척도라고 생각이 된다.
기본적으로 제공되는 좋은 위젯들이 많다.
NavigationRail 위젯과 LayoutBuilder 위젯은 같이 사용하면 좋다.
따라서 묶어서 정리하려 한다.
1. NavigationRail
- 메뉴라고 생각하면 된다.
- 각각의 메뉴 아이콘, label을 등록한다
- 각 메뉴 선택 이벤트 콜백이 존재한다.
- extended 어트리뷰트를 통해 확장형태 (아이콘 + 메뉴명) 을 보여줄지, 축소형태 (아이콘) 를 보여줄지
정할 수 있다.
2. LayoutBuilder
- 현재 화면 크기를 구할 수 있다
- 현재 화면 크기에 맞추어 위젯트리를 변경 할 수 있다.
- NavigationRail의 확장의 경우, 화면사이즈 변화에 맞춰 자동으로 변경되지 않는다.
따라서 이 위젯을 통해 자동으로 변경되도록 설정 할 수 있다.
- builder 인자값으로 constraints 를 받아 이를 통해 화면 크기를 구할 수 있다
NavigationRail 예
NavigationRail(
extended: true 또는 false,
destinations: [
NavigationRailDestination(
icon: Icon(아이콘), label: Text(텍스트)),
NavigationRailDestination(
icon: Icon(아이콘), label: Text(텍스트)),,
],
selectedIndex: 숫자값. 보통은 변수를 배정하고 변수값을 변화시킨다,
onDestinationSelected: (value) {
print('$value');
},
LayoutBuilder 와 NavigationRail 의 조합 예
return LayoutBuilder(builder: (context, constraints) {
return Scaffold(
body: Row(
children: [
SafeArea(
child: NavigationRail(
extended: constraints.maxWidth >= 600,
destinations: [
NavigationRailDestination(
icon: Icon(아이콘), label: Text(문자열)),
NavigationRailDestination(
icon: Icon(아이콘), label: Text(문자열)),
],
selectedIndex: 선택인덱스. 보통 변수로 설정하고 변수값을 조정,
onDestinationSelected: (value) {
print('$value');
},
),
),
],
),
);
});
}