-
Flutter - Page 이동하기 (Navigator.push, Navigator.pushNamed) [7]Flutter 2021. 1. 2. 17:18728x90반응형
1.Navigator.push
void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: MainPage(), ); } } class MainPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: Icon(Icons.menu), title: Text('MainPage'), actions: [ Icon(Icons.search), ], ), body: Center( child: RaisedButton( child: Text('SubPage로 이동'), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => SubPage()), ); }, ), ) ); } } class SubPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: Icon(Icons.menu), title: Text('SubPage'), actions: [ Icon(Icons.search), ], ), body: Center( child: RaisedButton( child: Text('MainPage로 이동'), onPressed: () { Navigator.pop(context); }, ), ) ); } }
MainPage
: 버튼을 누르면 서브페이지로 이동한다.
Navigator.push: Navigator에서 관리되는 route 스택에 추가한다.
- MaterialPageRoute: route이동시 플랫폼에 특화된 애니메이션을 사용하기 좋다.
SubPage
: 버튼을 누르면 메인페이지로 돌아간다.
Navigator.pop: 현재 Route스택을 제거 한다. (즉, 이전페이지로 돌아간다.)
2.Navigator.pushpushNamed
void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', initialRoute: '/', routes: { // "/" route로 이동하면, Mainpage 위젯을 생성합니다. '/': (context) => MainPage(), // "/subpage" route로 이동하면, SubPage 위젯을 생성합니다. '/subpage': (context) => SubPage(), }, ); } } class MainPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: Icon(Icons.menu), title: Text('MainPage'), actions: [ Icon(Icons.search), ], ), body: Center( child: RaisedButton( child: Text('SubPage로 이동'), onPressed: () { Navigator.pushNamed(context, '/subpage'); }, ), ) ); } } class SubPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: Icon(Icons.menu), title: Text('SubPage'), actions: [ Icon(Icons.search), ], ), body: Center( child: RaisedButton( child: Text('MainPage로 이동'), onPressed: () { Navigator.pop(context); }, ), ) ); } }
MyApp
: 앱을 정의하고 routes를 정의한다.
initialRoute: 앱의 시작점을 나타낸다.
routes: route할 이름과 Widget을 정의한다.
MainPage
: 버튼을 누르면 서브페이지로 이동한다.
Navigator.pushNamed: Navigator에서 관리되는 route 스택에 추가한다. (앞에서 정의한 routes 에서 찾아서 Widget을 생성함)
SubPage
: 버튼을 누르면 메인페이지로 돌아간다.
Navigator.pop: 현재 Route스택을 제거 한다. (즉, 이전페이지로 돌아간다.)
728x90반응형'Flutter' 카테고리의 다른 글
Flutter - BoxDecoration 만들기 [9] (0) 2021.01.16 Flutter - Drawer 만들기 [8] (0) 2021.01.02 Flutter - Button 만들기 (RaisedButton, FlatButton, IconButton, FloatingActionButton, CustomButton) [6] (0) 2021.01.02 Flutter - Layout 만들기(2) (GridView, ListView, Stack, Card) [5] (0) 2021.01.01 Flutter - Layout 만들기(1) (Container, Center, Row, Column, Expanded) [4] (0) 2021.01.01