4

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

我对如何加载异步函数特别感兴趣,比如Future<Contact> getAllContacts() async { ... }当 ui 是用 a或类似的东西构建FutureProvider时。ChangeNotifierProvider

此外,每次notifyListeners()调用时,我都希望该提供程序通过异步调用重建 ui。提供者是否可以这样做,或者我错过了什么?

4

1 回答 1

8

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

它有两个主要用途:

  • 公开需要异步加载的“不可变值”(例如配置文件):
FutureProvider<MyConfig>(
  builder: (_) async {
    final json = await // TODO load json from something;
    return MyConfig.fromJson(json); 
  }
)
  • 或者,它可以与可以变异的东西(比如ChangeNotifier)结合起来,将 a 转换Future成更容易操作的东西:
ChangeNotifierProvider(
  builder: (_) => Foo(),
  child: Consumer<Foo>(
    builder: (_, foo, __) {
      return FutureProvider.value(
        value: foo.someFuture,
        child: ...,
      );
    },
  ),
);
于 2019-08-04T20:30:18.677 回答