Flutter:当它是 FutureProvider() 时找不到 `Provider.of(context)`

Flutter: `Provider.of(context)` cannot be found when it is a `FutureProvider()`

我的小部件树中有一个提供程序,我调用 Provider.of<List<...>>(context) 来查找它。如果它是任何类型的提供者,它都可以正常工作,但是,一旦将提供者从 Provider()(例如)更改为 FutureProvider(),它就不起作用。

我没有更改树中的任何小部件,也没有更改它们在导航器中的位置。 Provider.of() 工作正常但是一旦我将它设置为 FutureProvider() 然后它就不起作用了。

编辑:我的代码看起来像这样:

内部构件构建:

return FutureProvider(
      initialData: [],
      create: (_) =>
          DatabaseService(uid: _auth.getUser()!.uid).getJournalEntries(),
      catchError: (context, error) {
        print(error.toString());
      },
      ...
}

然后 children 中的一个是另一个小部件,这是它的构建函数:

List<JournalEntryData> entries =
        Provider.of<List<JournalEntryData>>(context);
    return ElevatedButton(
        onPressed: () {
          print(entries);
        },
        child: Text('print provider data'));
}

我收到以下错误:

错误:在此 TestButton 小部件上方找不到正确的 Provider

发生这种情况是因为您使用的 BuildContext 不包括提供商 你的选择。有几个常见的场景:

问题是小部件树中有一个提供者:

FutureProvider() 替换为任何其他类型的提供程序即可使其正常工作,但我需要一个 FutureProvider()

我没有定义 FutureProvider() 的类型,所以它是 dynamic 但在我的 Provider.of() 调用中我指定了导致问​​题的类型。指定 FutureProvider() 的类型应该可以解决问题。