我有一个连接到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;
}