Flutter Flatter Riverpod-如何组合提供者在流上进行过滤
我试图按照示例文档介绍如何使用flifter&Riverpod组合提供者来过滤项目列表。数据来自Firestore,使用流:Flutter Flatter Riverpod-如何组合提供者在流上进行过滤,flutter,riverpod,Flutter,Riverpod,我试图按照示例文档介绍如何使用flifter&Riverpod组合提供者来过滤项目列表。数据来自Firestore,使用流: final carListProvider = StreamProvider.autoDispose<List<Car>>((ref) { final carsRepo = ref.watch(carsRepositoryProvider); return carsRepo.cars(); }); 然后,按照文档示例,我尝试合并提供者:
final carListProvider = StreamProvider.autoDispose<List<Car>>((ref) {
final carsRepo = ref.watch(carsRepositoryProvider);
return carsRepo.cars();
});
然后,按照文档示例,我尝试合并提供者:
final filteredCars = StreamProvider<List<Car>>((ref) {
final filter = ref.watch(carListFilter);
final cars = ref.watch(carListProvider); <-- This line throws the error
switch (filter.state) {
case CarColorFilter.all:
return cars;
case CarColorFilter.red:
return cars.where(...)
default:
}
})
final filteredCars=StreamProvider((ref){
最终过滤器=参考表(carListFilter);
final cars=ref.watch(carListProvider);在文档中找到了答案,在这里发布,以防对其他人有所帮助:
使用.autoDispose时,您可能会发现自己处于
您的应用程序未编译,错误类似于:
无法将参数类型“AutoDisposeProvider”分配给
参数类型“AlwaysAliveProviderBase”
别担心!这个错误是自愿的。它的发生是因为你
可能有一个bug:
您试图侦听中标记为.autoDispose的提供程序
未标记为.autoDispose的提供程序
将filteredList提供程序标记为autoDispose
可解决此问题
final filteredCars = StreamProvider<List<Car>>((ref) {
final filter = ref.watch(carListFilter);
final cars = ref.watch(carListProvider); <-- This line throws the error
switch (filter.state) {
case CarColorFilter.all:
return cars;
case CarColorFilter.red:
return cars.where(...)
default:
}
})