|
|
行1: |
行1: |
− | ==画面遷移サンプル==
| + | [[flutter/画面遷移/基本]] |
− | ==その1==
| + | |
− | routerをMyAppの中に追加
| + | |
− | <pre>
| + | |
− | class MyApp extends StatelessWidget {
| + | |
− | @override
| + | |
− | Widget build(BuildContext context) {
| + | |
− | return MaterialApp(
| + | |
− | title: 'Flutter Demo',
| + | |
− | theme: ThemeData(
| + | |
− | primarySwatch: Colors.blue,
| + | |
− | ),
| + | |
− | home: MyHomePage(title: 'Flutter Demo Home Page'),
| + | |
− | routes: <String, WidgetBuilder> {
| + | |
− | '/help': (BuildContext context) => new MyHomePage(title: 'page help'),
| + | |
− | '/privacy': (BuildContext context) => new MyHomePage(title: 'page privacy'),
| + | |
− | '/use': (BuildContext context) => new MyHomePage(title: 'page use'),
| + | |
− | },
| + | |
− | );
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
| | | |
− | 画面遷移 | + | [[flutter/画面遷移/基本]] |
− | Navigator.of(context).pushNamed('/use');
| + | |
| | | |
− | ==その2==
| + | [[flutter/画面遷移/基本]] |
− | router&画面遷移
| + | |
− | <pre>
| + | |
− | Navigator.push(context, new MaterialPageRoute<Null>(
| + | |
− | settings: const RouteSettings(name: "/use"),
| + | |
− | builder: (BuildContext context) => MyHomePage(title: 'page use')
| + | |
− | ));
| + | |
− | </pre>
| + | |
− | | + | |
− | ==元の画面に戻る==
| + | |
− | Navigator.pop(context);
| + | |
− | | + | |
− | ==遷移先から遷移元に戻った時の処理==
| + | |
− | Navigator.push(context, new MaterialPageRoute<Null>(
| + | |
− | settings: const RouteSettings(name: "/text"),
| + | |
− | builder: (BuildContext context) => TextPage(title: 'page use')
| + | |
− | )).then((result) {
| + | |
− | setState(() {
| + | |
− | print ("ここで戻ってきた時の処理");
| + | |
− | });
| + | |
− | });
| + | |
− | | + | |
− | ==参考==
| + | |
− | https://qiita.com/tatsu/items/38cd85efd93005b95af9
| + | |
| | | |
| ==指定した元の画面に戻る== | | ==指定した元の画面に戻る== |
2019年11月16日 (土) 15:17時点における版
flutter/画面遷移/基本
flutter/画面遷移/基本
flutter/画面遷移/基本
指定した元の画面に戻る
遷移する時
Navigator.push(context, new MaterialPageRoute<Null>(
settings: const RouteSettings(name: "/use"),
builder: (BuildContext context) => MyHomePage(title: 'page use')
));
指定した画面へ戻る時
Navigator.popUntil(context, ModalRoute.withName("/use"));
同じ"/use"をまで戻ってそれまでのページは破棄される。
参考:https://codeday.me/jp/qa/20190826/1540990.html
元の場所に戻らずNavigatorにページを追加しない
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) => EditPage(title: '編集'))
).then((result) {
print ("戻ってきた時の処理");
});
参考:https://coglayblog.com/?p=654