我想实现一个功能,当应用程序切换到后台时,该应用程序进入登录页面,因此我将WidgetsBindingObserver
和override
方法didChangeAppLifecycleState()
混合使用,效果很好第一次,当我将应用程序切换到后台时,但是第二次失败,并收到异常“方法findAncestorStateOfType()
被调用为null。”。
这是堆栈:
The following NoSuchMethodError was thrown during a platform message callback:
The method 'findAncestorStateOfType' was called on null.
Receiver: null
Tried calling: findAncestorStateOfType<NavigatorState>()
When the exception was thrown, this was the stack:
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1 Navigator.of (package:flutter/src/widgets/navigator.dart:1492:19)
#2 Navigator.pushAndRemoveUntil (package:flutter/src/widgets/navigator.dart:1219:22)
#3 Router.navigateTo (package:fluro/src/router.dart:66:25)
#4 NavigationUtil._navigateTo (package:allpass/utils/navigation_util.dart:16:24)
这是我的代码:
class _HomePage extends State<HomePage> with WidgetsBindingObserver {
@override void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.resumed) {
NavigationUtil.goLoginPage(context);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Text("HomePage"),
);
}
}