728x90
반응형
다른 페이지 위젯으로 이동
Navigator.push(context, MaterialPageRoute(builder: (context) => [이동할 페이지 위젯],))
다른 페이지 위젯에서 복귀
: result 'ok'한 값을 optional
Navigator.pop(context, 'ok');
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => [page],))
MaterialApp내부 routes에 저장
return MaterialApp(
home: Scaffold(
body: Column(
children: [
ElevatedButton(
onPressed: () async {
final result = await Navigator.pushNamed(context, '/first');
},
child: Text(''),
),
],
),
),
routes: {
'/first' : (context) => FirstPage(),
'/second': (context) => SecondPage(),
},
);
BottomNavigation
TabController? controller;
@override
void initState() {
super.initState();
controller = TabController(length: 2, vsync: this);
controller!.addListener(tabListener);
}
@override
void dispose() {
controller!.removeListener(tabListener);
super.dispose();
}
void tabListener() {
setState(() {
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: TabBarView( // 탭 화면을 보여줄 위젯
controller: controller,
children: renderChildren(),
),
bottomNavigationBar: renderBottomNavigation(),
);
}
List<Widget> renderChildren() {
return [
Container(
child: Center(
child: Text(
'Tab 1',
style: TextStyle(
color: Colors.white
),
),
),
),
Container(
child: Center(
child: Text(
'Tab 2',
style: TextStyle(
color: Colors.white,
),
),
),
),
];
}
BottomNavigationBar renderBottomNavigation() {
return BottomNavigationBar(
currentIndex: controller!.index,
onTap: (value) {
setState(() {
controller!.animateTo(value);
});
},
items: [
BottomNavigationBarItem(
icon: const Icon(Icons.edgesensor_high_outlined),
label: '주사위'
),
BottomNavigationBarItem(
icon: const Icon(Icons.settings),
label: '설정'
),
],
);
}
728x90
반응형
'dev > flutter' 카테고리의 다른 글
[Flutter] Http API통신 (0) | 2023.12.27 |
---|---|
[Flutter] 네이티브(NativeView) 안드로이드(AOS)연동 액티비티(Activity)통신 (0) | 2023.12.27 |
[Flutter] 기본 위젯2 정리 (0) | 2023.12.19 |
[Flutter] 기본 위젯1 정리 (0) | 2023.12.19 |
[Flutter] Container (0) | 2023.12.14 |