FutureProvider 的用例

the*_*yro 4 async-await dart flutter flutter-provider

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

我特别感兴趣的如何加载像一个异步函数Future<Contact> getAllContacts() async { ... },当用户界面是一个内置FutureProviderChangeNotifierProvider或任何类似。

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

Rém*_*let 8

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

它有两个主要用途:

  • 公开需要异步加载的“不可变值”(例如配置文件):
FutureProvider<MyConfig>(
  builder: (_) async {
    final json = await // TODO load json from something;
    return MyConfig.fromJson(json); 
  }
)
Run Code Online (Sandbox Code Playgroud)
  • 或者,它可以与可以变异的东西(如ChangeNotifier)结合使用,以将 a 转换Future为更易于操作的东西:
ChangeNotifierProvider(
  builder: (_) => Foo(),
  child: Consumer<Foo>(
    builder: (_, foo, __) {
      return FutureProvider.value(
        value: foo.someFuture,
        child: ...,
      );
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)

  • 我很欣赏您对 Provider 包的开发,但我无法理解为什么存在 FutureProvider 而不是“FutureChangeNotifierProvider”之类的合理逻辑。后者似乎是状态管理更常见的用例,尽管比前者更难实现。 (4认同)
  • 是否有一种在“MultiProvider”中使用此模式的干净方法? (2认同)