从StreamProvider更新提供者

时间:2020-04-18 12:47:53

标签: flutter

我有一个连接到Firebase的StreamProvider,还有另一个Provider / ChangeNotifier,它具有根据应用程序状态以不同方式处理StreamProvider数据的功能。因此,每当有新数据来自StreamProvider时,我都希望立即将其发送到Provider / ChangeNotifier中,以便在应用程序状态更改时可以轻松地对其进行处理。

问题:我不知道将StreamProvider的结果发送到Provider / ChangeNotifier的最佳方法。

我的临时解决方案:在StreamProvider函数中,可以通过执行以下操作将结果发送到另一个Provider,但请注意,我必须使用“ listen:false”。否则,我会收到类似“尝试从小部件树外部监听提供程序公开的值”的错误。

这似乎不是最好的解决方案,因为我必须在需要使用Provider的所有位置上将一个变量设置为Provider.of(context),即使我实际上并不需要这些小部件中的StreamProvider。但是,如果没有定义这些变量,则依赖于StreamProvider和Provider的窗口小部件将无法重建。

我想知道是否有更好的方法来完成此操作。

从为StreamProvider定义的流中:

return ref.snapshots().map((items) {

      // Sending the result to the other Provider
      var appData = Provider.of<AppData>(context, listen: false);
      appData.setVariable(items);

      return items;

}

0 个答案:

没有答案