如何解决RxDart BehaviorSubject的侦听器在subject.addvalue之后不获取值
我有两个类:CurrencyRepo和CurrencyFetcher。从CurrencyFetcher,我尝试收听回购中的behaviorSubject。但是,当我在回购内的behaviorSubject中添加值时,CurrencyFetcher无法获取这些值。我在做什么错了?
class CurrencyFetcher implements CurrencyFetcherService {
final CurrencyRepo _currencyRepo;
StreamSubscription currencySubscription;
CurrencyFetcher(this._currencyRepo,this._preferencesService) {
_subscribeToCurrencies();
}
void _subscribeToCurrencies() {
currencySubscription = _currencyRepo
.getCurrenciesStream()
.listen((currencies) => _handleApiCurrencies);
}
Future<void> _handleApiCurrencies(List<ApiCurrency> apiCurrencies) async {
// implemetation
}
}
class CurrencyRepo {
final CurrencyApi _currencyApi;
final BehaviorSubject<List<ApiCurrency>> _currencySubject = BehaviorSubject.seeded([]);
Stream<List<ApiCurrency>> getCurrenciesStream() {
_updateCurrencies();
return _currencySubject.stream;
}
CurrencyRepo(this._currencyApi);
void _updateCurrencies() {
_currencyApi.getCurrencies().then((currencies) {
_currencySubject.add(currencies);
});
}
}
我检查了CurrencyFetcher开始侦听后是否将值添加到流中。我检查了一下,当我向流添加新值时,它具有一个侦听器。第一次使用RxDart,有人可以帮忙吗? :)
解决方法
在函数_subscribeToCurrencies()
中尝试编写
_currencyRepo.currenciesStream.listen((currencies) {
_handleApiCurrencies(currencies);
});
代替
_currencyRepo.currenciesStream.listen(_handleApiCurrencies);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。