如何解决我可以在 MultiProvider 中使用 Future Provider 吗?但它可以从 API
我正在尝试使用 flutter Provider 包,并且我有一个 API,我想在其中获取传输类型的数据和路线的标题(它是 Marshes 类)。我决定使用 Future Provider ans,因为我知道如果我想使用 mu;tiproviders 我将需要使用 MultiProvider 在widhet 树顶部的主要失败中。我做了与文档中描述的相同的操作,但现在出现错误:“在构建 Home(dirty) 时抛出了以下 ProviderNotFoundException:
错误:无法在此主页小部件上方找到正确的 Provider"
所以问题是:我可以在 Multiproviders 中使用 futureproviders 吗?就像我在下面的代码中所做的那样。
我实际上不明白我的错误在哪里
主文件:
Widget build(BuildContext context) {
return MultiProvider(
providers: [
FutureProvider(
create: (context) => transportService.fetchTranspot(),initialData: [],catchError: (context,error) {
print(error.toString());
},),FutureProvider(
create: (context) => transportService.fetchMarshes(),],child: MaterialApp(
title: 'Flutter Demo',theme: ThemeData(
primarySwatch: Colors.blue,home: Home(),
另一个用于传输类型:
List<TransportType> transport = Provider.of<List<TransportType>>(context);
return Scaffold(
appBar: AppBar(title: Text('Employees'),body: (transport == null)
? Center(child: CircularProgressIndicator(),)
: ListView.builder(
itemCount: transport.length,itemBuilder: (context,index){
return ListTile(
title: Text(transport[index].ttTitle),
沼泽地也一样。我想把它做成一个列表
final int ttId;
final TransportService transportService = TransportService();
EmployeePage({@required this.ttId});
@override
Widget build(BuildContext context) {
List<Marshes> marsh = Provider.of<List<Marshes>>(context);
return Scaffold(
appBar: AppBar(title: Text('Employees'),body: (marsh == null)
? Center(child: CircularProgressIndicator(),)
: ListView.builder(
itemCount: marsh.length,index){
return ListTile(
title: Text(marsh[index].mrTitle),
解决方法
您没有指定 FutureBuilder
的类型,例如:
providers: [
FutureProvider(
应该是:
providers: [
FutureProvider<List<TransportType>>(
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。