gpt4 book ai didi

flutter - flutter 重启应用程序或重定向到第一个小部件

转载 作者:行者123 更新时间:2023-12-03 03:39:51 35 4
gpt4 key购买 nike

我正在开发一个 flutter 朔迷离的应用程序。

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

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

我得到了应用程序状态
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
  • 我试图重新启动应用程序

  • 所有这些都有相同的问题:context为null或相似。

    如果我直接使用button或其他按钮执行任何这些选项,则可以使用。
    但是当应用程序出现在前台时,系统会告诉我上下文为null或Material

    任何人都可以帮助知道该怎么做?

    谢谢你们!!

    最佳答案

    我已经解决了

    在带有“魔术”的条件标记中,我在setState内部调用了“showDialog”:

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

    if (state == AppLifecycleState.resume && isLogged) {

    setState(() {
    showDialog(
    context: context,
    builder: (BuildContext context) {
    ... blablabla ...
    }
    });

    }
    }

    关于flutter - flutter 重启应用程序或重定向到第一个小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57826381/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com