一旦收到ListView
扑朔迷离的通知,刷新它的最佳方法是什么?在pageA的示例中,我有一个listView。收到推送通知时,我希望页面A listView刷新。
我使用bloc作为我的项目,但不确定如何刷新它。
main.dart
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("===== onMessage ====");
// call PageA initState to refresh listView
);
PageA initState
@override
void initState() {
super.initState();
_pageABloc.getData(); // retrieve from server
});
}
bloc
final _abc = BehaviorSubject<List<ABC>>();
get abcSink => _abc.sink;
get abcStream => _abc.stream;
Future getData() async {
List<ABC> list = List<ABC>();
try {
var abc = await _repo.getData();
abcSink.add(abc);
} catch (e) {
rethrow;
}
}
如果使用BLoC,则所有输出均为Stream
。如果您要刷新ListView
,然后将其包装到StreamBuilder
中,那么每次BloC发出新项目时,StreamBuilder
都会使用新数据重新构建自身,然后可以将该数据传递给[ C0]。