gpt4 book ai didi

dart - 无论用户在应用程序中的哪个位置,如何打开 Flutter 对话框

转载 作者:IT王子 更新时间:2023-10-29 07:23:49 29 4
gpt4 key购买 nike

我正在开发一个 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'),
),
],
),
);
}
});
}

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

您需要为 context 变量传递一个 BuildContext,并且当您进行调用时,该上下文需要挂载(相应的元素)在树中。

或者,您可以将消息/流从您的 super 逻辑发送到具有上下文并监听流的应用程序的任何部分。您可以从这里调用对话框。

关于dart - 无论用户在应用程序中的哪个位置,如何打开 Flutter 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086259/

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