Flutter 获得一条小溪<;列表<;对象>&燃气轮机;从一条小溪<;事件>;从firebase实时数据库颤振
我对Flitter Streams/Bloc/Provider非常陌生,我正在学习一个教程来理解它。 在本教程中,他们使用Firestore,因此获得如下流:Flutter 获得一条小溪<;列表<;对象>&燃气轮机;从一条小溪<;事件>;从firebase实时数据库颤振,flutter,firebase-realtime-database,Flutter,Firebase Realtime Database,我对Flitter Streams/Bloc/Provider非常陌生,我正在学习一个教程来理解它。 在本教程中,他们使用Firestore,因此获得如下流: Stream<List<Todo>> todos() { return todoCollection.snapshots().map((snapshot) { return snapshot.documents .map((doc) => Todo.fromEntit
Stream<List<Todo>> todos() {
return todoCollection.snapshots().map((snapshot) {
return snapshot.documents
.map((doc) => Todo.fromEntity(TodoEntity.fromSnapshot(doc)))
.toList();
});
}
}
//试试3
流警报(){
return\u databaseReference.onValue.map(
(快照)=>UserAlert.fromSnapshot(快照);//返回类型错误
);
}使用StreamTransformer
Stream<UserAlert> alerts() {
handleData(Event event, EventSink<UserAlert> sink) =>
sink.add(UserAlert.fromSnapshot(event.snapshot.value));
final transformer =
StreamTransformer<Event, UserAlert>.fromHandlers(handleData: handleData);
return _databaseReference.onValue.transform(transformer);
}
流警报(){
handleData(事件、事件接收器)=>
添加(UserAlert.fromSnapshot(event.snapshot.value));
终变=
StreamTransformer.fromHandlers(handleData:handleData);
返回_databaseReference.onValue.transform(transformer);
}
非常感谢。它正在抛出一个错误,因为无法将参数类型“Stream”分配给参数类型“Iterable”。你能看到发生了什么吗?你如何获得用户警报列表?什么是\u databaseReference.onValue
?流警报(){handleData(Event-Event,EventSink-sink)=>sink.add([UserAlert.fromSnapshot(Event.snapshot)];final transformer=StreamTransformer.fromshandledata(handleData:handleData);返回{databaseReference.onValue.transform(transformer);}警报()。监听((警报){final aList=[alert];});祝你好运~~干杯
// try 3
Stream<List<UserAlert>> alerts() {
return _databaseReference.onValue.map(
(snapshot) => UserAlert.fromSnapshot(snapshot); // wrong return type
);
Stream<UserAlert> alerts() {
handleData(Event event, EventSink<UserAlert> sink) =>
sink.add(UserAlert.fromSnapshot(event.snapshot.value));
final transformer =
StreamTransformer<Event, UserAlert>.fromHandlers(handleData: handleData);
return _databaseReference.onValue.transform(transformer);
}