Flutter提供者:使用Provider内部的Stream Listener实时更新数据

t1qtbnec  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(159)

在我的一个提供程序中,我想收听Stream。为了清楚起见,我简化了代码,只使用int值来表示Stream。实际上,这可以是要监听的Firestore快照的Stream

class MyProvider with ChangeNotifier {
  int _data = 0;
  int get data => _data;

  // called when app gets initialized
  void init() {
    // stream which is not updated often (e.g. snapshot listener from Firestore)
    final stream = Stream<int>.periodic(
      const Duration(minutes: 5),
      (count) => count++,
    );

    stream.listen((event) {
      _data = event;
      notifyListeners();
    });
  }
}

是否可以在Provider内部监听流,或者是否需要考虑一些问题?
我不想使用StreamProvider,因为我的ChangeNotifierProvider中有更多的业务逻辑,这是StreamProvider不可能实现的。

kuuvgm7e

kuuvgm7e1#

考虑将业务逻辑重构为单独的组件,然后使用StreamProvider。如果这不可能,在我看来,根据流数据更新更改通知程序也没有错。

相关问题