flutter - 导航导致查找已停用小部件的祖先是不安全的
问题描述
我有一个 SplashScreen,它应该等待 2 秒,然后导航到 ShowsScreen 或 LoginScreen。这是示例代码。
class SplashScreen extends StatelessWidget {
const SplashScreen({Key? key}) : super(key: key);
static const routeName = '/';
Future<void> checkRememberMeAndNavigateAppropriately(BuildContext context) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
if (prefs.getBool(prefsRememberMeKey) ?? false) {
Navigator.of(context).pushReplacementNamed(ShowsScreen.routeName);
} else {
Navigator.of(context).pushReplacementNamed(LoginScreen.routeName);
}
}
@override
Widget build(BuildContext context) {
Future.delayed(const Duration(seconds: 2)).then((_) {
checkRememberMeAndNavigateAppropriately(context);
});
return Scaffold(
body: ...
);
}
它按预期工作,但抛出Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe.
任何形式的帮助将不胜感激。
解决方案
推荐阅读
- text-to-speech - 如何以编程方式将阿塞拜疆文本转换为语音?
- c# - 通过给出其索引值来查找列表的对象类型的数据
- c# - 尝试使用 C# 代码在 excel 中将下拉菜单与 if 语句链接起来
- javascript - 合并/替换具有相同 ID 的数组中的对象
- excel - 删除VBA中的部分文本
- python - 尝试在 python-docx 的帮助下访问存储在 aws-s3 存储桶中的 docx 类型文件时遇到问题
- arrays - 在列表 Spring Boot 中设置默认值
- cassandra - 无法运行卡桑德拉
- python - 将 dataframe1 中的单元格值替换为 dataframe2 中先前确定的值
- java - TextView 不会显示为粗体