Flutterで、結果のある画面遷移をする
最終更新日:2019-05-02
Flutterでは、Androidの startActivityForResult()
のように、遷移先の画面から入力結果を受け取るような画面遷移もできます。
結果を期待した画面遷移をする
遷移先の画面が結果を返してくれる場合は、 画面遷移時、await Navigator.push()
とすることで結果を受け取れます。
FloatingActionButton(
onPressed: () async { // awaitを使うのでasyncにする
bool result = await Navigator.push(
this.context,
MaterialPageRoute(
builder: (context) => NextPage())
);
this.setState(() {
// バックボタンが押されたりした場合はnullになる
if (result != null && result) {
_counter += 100;
}
});
},
// 中略
)
呼び出し元に結果を返す
遷移先の画面で、呼び出し元に結果を返すには Navigator.pop(context, 結果)
を呼びます。
例として、中央に配置したテキストをタップしたら呼び出し元に true
を返すようにしてみます。
class NextPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Next Page")),
body: Center(
child: GestureDetector(
child: Text("画面その2だよ"),
// タップされたら、呼び出し元に結果を返す
onTap: () { Navigator.pop(context, true); },
)
),
);
}
}