Flutter
Flutter - Page 이동하기 (Navigator.push, Navigator.pushNamed) [7]
YunSeYeong
2021. 1. 2. 17:18
728x90
반응형
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
반응형