使用静态方法初始化 FutureProviders

时间:2021-01-20 08:10:16

标签: flutter dart provider

我正在使用 FutureProvider 并尝试使用返回 ChangeNotifier 的静态未来方法初始化提供程序。看起来像这样。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureProvider(
      create: (_) => TabProvider.initTabProvider('Tasmania'),
      catchError: (_, e) => print(e.toString()),
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        home: RootWidget(),
      ),
    );
  }
}

class TabProvider with ChangeNotifier {
  TabItem homeTab = TabItem.explore;
  TabItem currentTab;
  States exploreStateCache;

  TabProvider(this.exploreStateCache) {
    currentTab = homeTab;
  }

  static Future<TabProvider> initTabProvider(String initialState) async {
    States stateCache =
        await HighlineDbProvider.getActiveStateCache(initialState);
    return TabProvider(stateCache);
  }
}

*请注意,States 不应与 State 混淆,States 指的是一个国家的州。

然后我打电话

TabProvider tabProvider = Provider.of<TabProvider>(context, listen: false);

在我的根小部件中并得到错误

Error: Could not find the correct Provider<TabProvider> above this RootWidget Widget

FutureProvider 是不是不允许我们这样使用它,还是我做错了?

0 个答案:

没有答案