【发布时间】:2021-11-05 18:08:20
【问题描述】:
我正在使用 BLoC 模式(带有 rxdart 包)来读取“EmpresaDatosModel”列表,当尝试包含接收器时,它会抛出以下错误:
参数类型'Stream
>'不能是 分配给参数类型'List '。
在 BLoC 模式中,我使用以下代码:
class EmpresaDatosBloc {
final _empresaDatosController = new BehaviorSubject<List<EmpresaDatosModel>>();
Stream <List<EmpresaDatosModel>> get empresaDatosStream => _empresaDatosController.stream;
Stream<List<EmpresaDatosModel>> cargarEmpresasStream() {
final empresasList = _empresaDatosProvider.cargarEmpresasStream();
_empresaDatosController.sink.add(empresasList); //THE ERROR THROWS HERE
return empresasList;
}
dispose() {
_empresaDatosController?.close();
}
}
从 Firebase RTDB 进行查询的提供程序具有以下内容:
Stream<List<EmpresaDatosModel>> cargarEmpresasStream() {
Query resp = db.child('admon');
final empStream = resp.onValue;
final publicarStream = empStream.map((event) {
final empMap = Map<String, dynamic>.from(event.snapshot.value);
final empList = empMap.entries.map((e) {
return EmpresaDatosModel.fromJson(Map<String,dynamic>.from(e.value));
}).toList();
return empList;
});
return publicarStream;
}
显示小部件如下所示:
final empresaDatosBloc = Provider.empresaDatosBloc(context);
empresaDatosBloc.cargarEmpresasStream();
//---
return StreamBuilder(
stream: empresaDatosBloc.empresaDatosStream,
builder: (BuildContext context, snapshot){
final empresasList = [];
if (snapshot.hasData) {
final myList = snapshot.data as List<EmpresaDatosModel>;
myList.forEach((element) {
empresasList.add(element);
});
}
如何将List<EmpresaDatosModel> 分配给接收器以修复错误?
【问题讨论】:
标签: flutter firebase-realtime-database bloc rxdart