まず前提として、
Navigator.pushNamed(context, "/page", arguments: "渡したい引数");
こんな感じでpushNamedに引数を渡せますよね。
そして次は受け取る方法です。
でよく紹介されているのは
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments;
print(args) // "渡したい引数"
...
}
こういうやつですよね。
でもこれだとcontextが必要なので、buildの中にしか書けません。
ちょっと不便です。
そこでこちら。
MaterialApp(
...
onGenerateRoute: (settings) {
if (settings.name == "/page") {
// ↓settings.argumentsに渡された引数入ってる
final args = settings.arguments as ScreenArguments;
return MaterialPageRoute(
builder: (context) {
// ↓こんな感じで引数をコンストラクタに渡せるので便利
return NextPage(
// args = "渡したい引数"
title: args,
);
},
);
}
assert(false, 'Need to implement ${settings.name}');
return null;
},
)
この方法だと、NextPageのコンストラクタに自分で引数を渡せるので、自由度が高くて便利です。
公式HPから引用。
https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments