我正在使用 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
是不是不允许我们这样使用它,还是我做错了?