我有一个运行良好的项目,但在最新的 flutter core 更新之后却没有,我得到了:
E/flutter (4510): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常:'package:flutter/src/widgets/navigator.dart':断言失败:第 3582 行 pos 12:'_history .any(_RouteEntry.isPresentPredicate)':导航器没有要替换的活动路由。E/flutter (4510): #0
_AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39) E/flutter (4510): #1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart: 36:5)
Future<void> _submit() async {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
final pref = await SharedPreferences.getInstance();
pref.setString('ip', _ip);
pref.setBool('isTablet', isTablet);
pref.setBool('setting1', isActivated);
// error on next part of the code
Navigator.of(context).pop();
Navigator.of(context).pushReplacementNamed('/');
Provider.of<Auth>(context, listen: false).logout();
}
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 5
根据您的问题,我假设您有 2 条路线。1 表示包含您的提交功能的当前屏幕,然后另一个 1 是“/”。
Navigator.of(context).pop(); // closes the current screen
Navigator.of(context).pushReplacementNamed('/') // replaces the current screen
Run Code Online (Sandbox Code Playgroud)
因此,如果您确实弹出当前屏幕,则代码中的下一行会出现错误,因为堆栈上没有您的代码段将替换的路由。删除 Navigator.of(context).pop(); 它会解决你的问题。
归档时间: |
|
查看次数: |
639 次 |
最近记录: |