问题描述
如何创建依赖于另一个提供者的提供者?
基本上,在我的用户登录后,主屏幕需要显示 2 个不同的信息:
当前周位于他的用户配置文件中,因此在我可以使用 currentWeekProvider 之前,我首先需要它。我们如何才能实现这种排序和依赖?
我有两个提供者:
final userProfileProvider = FutureProvider<UserProfile>((ref) async {
final repository = ref.watch(hopeRepositoryProvider);
UserProfile user = await repository.getUserProfile();
return user;
});
final programProvider = FutureProvider<HopeProgram>((ref) async {
final repository = ref.read(hopeRepositoryProvider);
final user = ref.watch(userProfileProvider);
HopeProgram program = await repository.getCurrentWeekProgram(user.currentWeek); // does not work,the compile complain
return program;
});
``
解决方法
正确的语法是:
final programProvider = FutureProvider<HopeProgram>((ref) async {
final repository = ref.read(hopeRepositoryProvider);
final user = await ref.watch(userProfileProvider.future);
HopeProgram program = await repository.getCurrentWeekProgram(user.currentWeek); // does not work,the compile complain
return program;
});
,
感谢雷米,
这是关键:
final user = await ref.watch(userProfileProvider.future)