我的主屏幕上有一个玩家列表,该列表来自数据库中的“ BLoC”
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()
,它将获得包含新添加的播放器的新列表,并将其沉入流中,问题是当我单击“后退”按钮返回到主屏幕时,我找不到新添加的播放器,这很奇怪,因为在将新播放器插入数据库后,我调用了bloc.fetchPlayers()
, fetchPlayers()
方法内的一个'print(player.name)',以确保新播放器存在于接收到流的列表中,并且在那里,但是当我走时它不出现回到主流。我希望我对这个问题的解释清楚