// スタック内のルートのリストを取得する var routes = List<MaterialPageRoute>.from(Navigator.of(context).routes); // スタック内の既存のルートを特定する var oldRoute = routes.firstWhere((route) => route.settings.name == '/old_screen'); // スタック内の既存のルートを新しいルートに置き換える var index = routes.indexOf(oldRoute); routes[index] = MaterialPageRoute(builder: (context) => MyNewScreen()); // スタック内のルートを更新する setState(() { Navigator.of(context).popUntil((route) => route.isFirst); for (var route in routes) { Navigator.of(context).push(route); } });
ん
Navigator.of(context).routesのroutes
にアクセスできない
var routes = <Route>[]; Navigator.of(context).widget.onGenerateRoute = (settings) { routes.add(settings.name); return null; }; Navigator.of(context).popUntil((route) => route.isFirst); for (var route in routes.reversed) { Navigator.of(context).pushNamed(route); }
onGenerateRouteはfinalなので代入不可能じゃん!!!