Я получаю сообщение об ошибке "тип" Future "не является подтипом типа" StreamTransformer, List> "в моем BLOC".
Это структура моего приложения: BLOC (а именно, reports_bloc). Репозиторий (а именно, репозиторий). Поставщик API (а именно, api_provider).
Подробно, файл провайдера API извлекает данные в оперативном режиме. Файл репозитория готовит данные от провайдера API (фактически,Я также использую DB, причина, по которой я выбираю файл репозитория. BLOC предназначен для получения данных из репозитория и добавления их в Stream и Sink соответственно. Я считаю, что проблема в BLOC (возможно, я получаю вещиздесь неправильно, что касается добавления в поток и «утопления» данных).
Код здесь:
//reports_bloc.dart
import 'package:rxdart/rxdart.dart';
import '../resources/repository.dart';
class ReportsBloc {
final _repository = Repository();
final _allReports = PublishSubject<List<dynamic>>();
Observable<List<dynamic>> allReports;
ReportsBloc(){
allReports = _allReports.stream.transform(fetchAllReports());
}
fetchAllReports() async{
var reports = await _repository.fetchAllReports();
_allReports.sink.add(reports);
}
dispose() {
_allReports.close();
}
}
//repository.dart
import 'dart:async';
import 'api_provider.dart';
class Repository {
ApiProvider apiProvider = ApiProvider();
Future<List<dynamic>> fetchAllReports(){
var response = apiProvider.getAllReports();
return response;
}
}
//api_provider.dart
Future<List<dynamic>> getAllReports() async {
List<dynamic> reports = [];
final response = await http.get("$_root$_getAllReports");
var result = json.decode(response.body);
for(var i = 0; i < result.length; i++){
reports.add(result[i]);
print(reports[i]['type']);
}
return reports;
}
Ожидаемый результат - возможность добавлять данные из репозитория и приемникаэто.