У меня есть список игроков на моем главном экране, который взят из моей базы данных с использованием 'BLo C'
final _myPlayersFetcher = PublishSubject<ApiResponse<List<Player>>>();
Stream<ApiResponse<List<Player>>> get myPlayerStream => _myPlayersFetcher.stream;
fetchPlayers() async {
try {
List<Player> myPlayers = await _repository.fetchAllMyPlayers(); // fetch players list from sqflite database
_myPlayersFetcher.sink.add(ApiResponse.completed(myPlayers));
} catch (e) {
_myPlayersFetcher.sink.add(ApiResponse.error(e.toString()));
}
}
// my stream builder
StreamBuilder(
stream: bloc.myPlayerStream,
builder: (context, AsyncSnapshot<ApiResponse<List<MyContact>>> snapshot) {
// my data
},
)
, и у меня есть еще один экран, который я использую для добавления игроков в свою базу данных, и когда добавляется новый игрок, я вызываю bloc.fetchPlayers()
, который получит новый список, содержащий нового добавленного игрока, и погрузит его в поток. Проблема в том, что когда я нажимаю кнопку «Назад», чтобы go вернуться на главный экран i не могу найти нового добавленного игрока, что странно, потому что после того, как новый игрок был вставлен в базу данных, я вызвал bloc.fetchPlayers()
, я добавил 'print (player.name)' внутри метода fetchPlayers()
, чтобы убедиться, что новый игрок существует в списке, который погружен в поток, и он там, но когда он не появляется, когда я go возвращается в основной поток. Надеюсь, мое объяснение проблемы ясно