我陷入了这种情况: 我正在尝试利用BLoC模式来处理数据库, 但是当我不知道怎么打电话.fromFuture 在流的水槽中
代码如下:
class ClientBloc implements BlocBase {
static final DatabaseHelper _db = DatabaseHelper();
final _listController = StreamController<List<Client>>();
Sink<List<Client>> get sinkList => _listController.sink;
Stream<List<Client>> get streamList => _listController.stream;
final StreamController<Client> _saveClientCtrl = StreamController<Client>();
Sink<Client> get sinkSave => _saveClientCtrl.sink;
ClientBloc(){
sinkList.add(_getList()); <----ERROR HERE
_saveClientCtrl.stream.listen(_saveClient);
}
static Future<List<Client>> _getList() async => await _db.getClientsList();
@override
void dispose() {
_listController.close();
_saveClientCtrl.close();
}
void _saveClient(data) {
_db.saveClient(data);
sinkList.add(_getList()); <----ERROR HERE
}
}
错误明确指出
> The argument type 'Future<List<Client>>' can't be assigned to the parameter type 'List<Client>'.dart(argument_type_not_assignable)
_getList() → Future<List<Client>>
你能帮我吗? 先感谢您 弗朗切斯科
答案 0 :(得分:1)
也许您可以尝试创建另一种方法?
赞:
someMethod() async{
List<Client> yourList = await _db.getClientsList();
sinkList.add(yourList);
}
然后将该方法插入到您的构造函数中:
ClientBloc() {
someMethod();
...
}