【发布时间】: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
任何人都可以帮助知道如何做到这一点??
谢谢大家!!
【问题讨论】: