facebook twitter hatena line email

「Flutter/画面遷移/基本」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「 ==画面遷移サンプル== ==その1== routerをMyAppの中に追加 <pre> class MyApp extends StatelessWidget { @override Widget build(BuildContext context) {...」)
 
(遷移先から遷移元に戻った時の処理)
行42: 行42:
 
           settings: const RouteSettings(name: "/text"),
 
           settings: const RouteSettings(name: "/text"),
 
           builder: (BuildContext context) => TextPage(title: 'page use')
 
           builder: (BuildContext context) => TextPage(title: 'page use')
      )).then((result) {
+
)).then((result) {
 
         setState(() {
 
         setState(() {
 
           print ("ここで戻ってきた時の処理");
 
           print ("ここで戻ってきた時の処理");

2019年12月19日 (木) 17:13時点における版

画面遷移サンプル

その1

routerをMyAppの中に追加

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'),
      },
    );
  }
}

画面遷移

Navigator.of(context).pushNamed('/use');

その2

router&画面遷移

Navigator.push(context, new MaterialPageRoute<Null>(
    settings: const RouteSettings(name: "/use"),
    builder: (BuildContext context) => MyHomePage(title: 'page use')
));

元の画面に戻る

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