1

私はこの状況で立ち往生しています:私はデータベースを処理するために 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>>

手伝って頂けますか?事前にありがとうフランチェスコ

4

1 に答える 1

1

別の方法を作成してみてはいかがでしょうか。

このような:

someMethod() async{
    List<Client> yourList = await _db.getClientsList();
    sinkList.add(yourList);
}

次に、そのメソッドをコンストラクターに挿入します。

ClientBloc() {
    someMethod();
    ...
}
于 2019-01-01T12:41:20.357 に答える