Flutter Riverpod FutureProvider提供异步值依赖项注入不可能
我有一个抽象类Flutter Riverpod FutureProvider提供异步值依赖项注入不可能,flutter,asynchronous,dependency-injection,provider,riverpod,Flutter,Asynchronous,Dependency Injection,Provider,Riverpod,我有一个抽象类讲师职位,由讲师职位impl实现讲师职位执行初始化SharedReferences SharedReferences LectureLocalDataSourceImpl({@required this.sharedPreferences}) 现在,我想使用Riverpod访问存储库,因此: FutureProvider<LectureLocalDataSource>( (ref) async { return LectureLocalDataSo
讲师职位
,由讲师职位impl
实现<代码>讲师职位执行初始化SharedReferences SharedReferences
LectureLocalDataSourceImpl({@required this.sharedPreferences})
现在,我想使用Riverpod访问存储库,因此:
FutureProvider<LectureLocalDataSource>(
(ref) async {
return LectureLocalDataSourceImpl(sharedPreferences: await SharedPreferences.getInstance());
},
);
我应该如何处理AsyncValue?您可以调用AsyncValue上的
.data
,这将为您提供基础数据值。如果您需要区分加载、数据和错误,AsyncValue文档将解释如何使用。我让If这样工作,对于使用SharedReferences的持久主题:
final sharedPreferences =
FutureProvider((ref) => SharedPreferences.getInstance());
final themeChangeNotifier = ChangeNotifierProvider<ThemeChangeNotifier>((ref) {
final prefs = ref.watch(sharedPreferences)?.data?.value;
return ThemeChangeNotifier(prefs);
});
我希望几天后能发布一段视频和回购协议:)
final sharedPreferences =
FutureProvider((ref) => SharedPreferences.getInstance());
final themeChangeNotifier = ChangeNotifierProvider<ThemeChangeNotifier>((ref) {
final prefs = ref.watch(sharedPreferences)?.data?.value;
return ThemeChangeNotifier(prefs);
});
final isDartTheme = watch(themeChangeNotifier).isDarkTheme;
final prefs = watch(sharedPreferences);
return prefs.when(
loading: () => Material(
child: CircularProgressIndicator(),
),
data: (_) => MaterialApp(
title: 'Flutter Demo',
theme: isDartTheme ? ThemeData.dark() : ThemeData.light(),
home: SearchPage(),
),
error: (_, __) => SizedBox.shrink(),
);