在使用popUntil
方法时,当我试图将数据传递到先前的屏幕时,我收到了以下错误。无法理解错误发生的原因:
[VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: Unsupported operation: Cannot modify unmodifiable map
以下是我遵循的步骤:
1)路由器:
Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case LoginViewRoute:
String navigatedScreen = settings.arguments as String;
return MaterialPageRoute(
settings: RouteSettings(name: LoginViewRoute, arguments: Map()),
builder: (context) => LoginPage(
navigatedPage: navigatedScreen,
));
}
}
2)推屏:
Navigator.pushNamed(context, LoginViewRoute, arguments: HomeViewRoute).then((value) {
final arguments = ModalRoute.of(context)?.settings.arguments as Map;
bool result = arguments[IS_LOGIN_COMPLTED];
if (result) {
_bloc.onLoggedIn();
print(User().email);
}
});
3)处理从推送屏幕返回的数据:
Navigator.of(context).popUntil((route) {
if (route.settings.name == widget.navigatedPage) {
(route.settings.arguments as Map)[IS_LOGIN_COMPLTED] = true;
return true;
} else {
return false;
}
在步骤3中,下面的代码块中,我面临着这个错误:
详细-2:ui_dart_state.cc(198)未处理异常:不支持的操作:无法修改不可修改的映射
这里是发生此错误的代码块(在步骤3中)
(route.settings.arguments as Map)[IS_LOGIN_COMPLTED] = true;
发布于 2022-09-02 18:42:57
解决了。确保屏幕上弹出的settings
不具有const
值
在下面的代码中从const
键中删除用户将弹出的密钥。
case HomeViewRoute:
return MaterialPageRoute(
builder: (context) => HomePage(),
settings: RouteSettings(name: HomeViewRoute, arguments: {}),
);
https://stackoverflow.com/questions/73584833
复制相似问题