您如何获得颤动可见页面的状态或上下文?

时间:2019-09-13 10:46:22

标签: flutter

有时,当用户在一页上时,事件(例如上载)开始异步。如果他们离开该页面,则任务的.then(...)将尝试在不再可见的页面上显示结果,例如通过烤面包。

在Future完成显示小吃店,吐司或对话框时,如何获取当前可见页面的上下文?

编辑: 我在oktoast(https://pub.dev/packages/oktoast)的说明中看到版本2“不需要传递buildContext”,并且进一步

报价:

  

说明#

     

您需要包装MaterialApp的原因有两个

     

因为这样可以确保将烤面包显示在所有其他显示的前面   控件可以缓存上下文,以便可以在任何地方调用   没有在上下文中传递

这对我意味着,在某个地方提供Material App祖先是一种更好的方法。...

1 个答案:

答案 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