有时,当用户在一页上时,事件(例如上载)开始异步。如果他们离开该页面,则任务的.then(...)
将尝试在不再可见的页面上显示结果,例如通过烤面包。
在Future完成显示小吃店,吐司或对话框时,如何获取当前可见页面的上下文?
编辑: 我在oktoast(https://pub.dev/packages/oktoast)的说明中看到版本2“不需要传递buildContext”,并且进一步
报价:
说明#
您需要包装MaterialApp的原因有两个
因为这样可以确保将烤面包显示在所有其他显示的前面 控件可以缓存上下文,以便可以在任何地方调用 没有在上下文中传递
这对我意味着,在某个地方提供Material App祖先是一种更好的方法。...
答案 0 :(得分:0)
对于一个简单的解决方案,我将使用提供程序包。关键字是StateManagement(https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple)
模型看起来像这样:
class UploadModel extends ChangeNotifier {
final bool loading = false;
void uploadXY() async{
loading = true;
// This call tells the widgets that are listening to this model to rebuild.
notifyListeners();
await realUploadStuff();
loading = true;
notifyListeners();
}
}
要开始上传:
Provider.of<UploadModel>(this).uploadXY()
如果load-bool发生变化要做出反应:
if(Provider.of<UploadModel>(this).loading)...
您可以在此处找到一个简单的示例: https://github.com/flutter/samples/blob/master/provider_counter/lib/main.dart