Поток флаттера не обновляется при нажатии кнопки возврата - PullRequest
0 голосов
/ 06 августа 2020

У меня есть список игроков на моем главном экране, который взят из моей базы данных с использованием '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 возвращается в основной поток. Надеюсь, мое объяснение проблемы ясно

...