我正在开发一个 Flutter 项目,无论用户碰巧在应用程序中的哪个位置,我都需要能够向用户显示对话框。目前,我正在 main() 启动的根级小部件中执行 showDialog() 函数。
该小部件实现了 WidgetsBindingObserver,以便我可以通过 didChangeAppLifecycleState() 函数监听应用程序何时从后台移动到前台。每当发生这种情况时,我都会向服务提供商提出请求,并根据结果显示我需要显示一个对话框。
每当发生这种情况时,用户将被导航到其他路线,这就是我似乎遇到麻烦的地方。下面是执行 API 调用和随后的 showDialog() 尝试的精简函数。但什么都没有发生。我尝试将其包装在 2 秒计时器中,认为这可能是应用程序刚刚回到前台的问题,但这并没有什么不同。
void _fetchSuperAwesomeStuff() {
final apiCaller = new SuperAwesomeStuffAPI();
apiCaller.fetchSuperAwesomeStuff().then((List<SuperAwesomeStuff> superAwesomeStuffs) {
if (superAwesomeStuffs != null && superAwesomeStuffs.length > 0) {
SuperAwesomeStuff superAwesomeStuff = superAwesomeStuffs[0];
// .... DOING STUFF WITH THIS SUPER AWESOME STUFF .... //
// NEED TO SHOW A DIALOG.
showDialog(
context: context,
builder: (_) => new AlertDialog(
title: Text('Test Title'),
actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.pop(context);
},
child: new Text('Close'),
),
],
),
);
}
});
}
对此的任何帮助将不胜感激,谢谢!