我想知道 FutureProvider 类存在什么用例?

我对如何在使用 Future<Contact> getAllContacts() async { ... }FutureProvider 或任何类似内容构建 ui 时加载异步函数(如 ChangeNotifierProvider )特别感兴趣。

此外,每次调用 notifyListeners() 时,我都希望该提供程序通过异步调用重建 ui。提供者有什么可能的方式还是我遗漏了什么?

最佳答案

FutureProvider 没有内置更新机制——但可以结合 Consumer 和可变对象( ChangeNotiferState )来处理更新。

它有两个主要用途:

  • 暴露一个需要异步加载的“不可变值”(例如一个配置文件):

  • FutureProvider<MyConfig>(
      builder: (_) async {
        final json = await // TODO load json from something;
        return MyConfig.fromJson(json);
      }
    )
    
  • 或者,它可以与可以变异的东西(如 ChangeNotifier )结合以将 Future 转换为更易于操作的东西:

  • ChangeNotifierProvider(
      builder: (_) => Foo(),
      child: Consumer<Foo>(
        builder: (_, foo, __) {
          return FutureProvider.value(
            value: foo.someFuture,
            child: ...,
          );
        },
      ),
    );
    

    10-06 09:38