使用NavigationUtil.goLoginPage(context),但得到异常“在null上调用了方法'findAncestorStateOfType'。”

时间:2020-02-02 15:15:30

标签: android flutter

我想实现一个功能,当应用程序切换到后台时,该应用程序进入登录页面,因此我将WidgetsBindingObserveroverride方法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"),
    );
  }
}

0 个答案:

没有答案