【问题标题】:flutter restart app or redirect to first widget颤振重新启动应用程序或重定向到第一个小部件
【发布时间】:2019-09-06 17:31:53
【问题描述】:

我正在用 Flutter 开发一个应用程序。

一切顺利,但我需要一些东西。

当应用程序进入前台时,我需要检查用户的令牌是否已过期。

我通过

获取应用状态

didChangeAppLifecycleState(AppLifecycleState state).

我的代码示例如下(我无法编写真正的代码,因为在我工作的计算机中,现在我在家):

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    WidgetsBinding.instance.addObserver(this);
    super.initState();
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  void didChangeAppLifecycleState(AppLifecycleState state) {
    var isLogged = boolFunctionToCheckLogin();

    if (state == AppLifecycleState.resume && isLogged) {
      // THIS IS THE PLACE WHEN I TRY TO CODE THE MAGIC
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Tutorial Lifecycle'),
      ),
      body: Center(),
    );
  }

但是,在 didChangeAppLifecycleState 函数内部:

  • 我尝试使用 Navigator.push 制作一个 showDialog 来登录
  • 我已尝试直接制作 Navigator.push
  • 我尝试重新启动应用程序

所有这些都有相同的问题:上下文为空或相似。

如果我直接使用按钮或其他任何选项执行这些选项中的任何一个,都可以。
但是当应用程序进入前台时,系统告诉我上下文为 null 或 Material

任何人都可以帮助知道如何做到这一点??

谢谢大家!!

【问题讨论】:

    标签: flutter dart widget


    【解决方案1】:

    我已经解决了。

    进入带有“魔法”的条件标记,我在 setState 中调用了“showDialog”:

    void didChangeAppLifecycleState(AppLifecycleState state) {
        var isLogged = boolFunctionToCheckLogin();
    
        if (state == AppLifecycleState.resume && isLogged) {
    
            setState(() {
                showDialog(
                context: context,
                builder: (BuildContext context) {
                    ... blablabla ...
                }
            });
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 2020-10-29
      • 2011-06-07
      • 1970-01-01
      • 2020-10-18
      • 2022-07-31
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多