Flutter Provider 依赖

问题描述

如何创建依赖于另一个提供者的提供者?

基本上,在我的用户登录后,主屏幕需要显示 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;
});
``

解决方法

正确的语法是:

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)