如何根据另一个提供程序创建提供程序?
基本上,在我的用户登录后,主屏幕需要显示2个不同的信息:
- 他的用户配置文件名称
- 他本周的信息来自一个9周的节目
当前周位于他的用户配置文件中,因此在我可以使用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;
});
``
感谢Remi,
这是关键:
final user = await ref.watch(userProfileProvider.future)
正确的语法是:
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;
});