我可以在 MultiProvider 中使用 Future Provider 吗?但它可以从 API 中解决它们
Can I use Future Provider in MultiProvider? But it can resolve both of them from the API
我正在尝试使用 flutter Provider package 并且我有一个 API 我想在其中获取传输类型和路线标题的数据(这是沼泽class)。我决定使用 Future Provider ans,据我所知,如果我想使用 mu;tiproviders 我将需要在我的主要失败中使用 MultiProvider widhet 树的顶部。我按照文档中的描述做了同样的事情,但现在我有一个错误:“以下 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(),
catchError: (context, error) {
print(error.toString());
},
initialData: [],
),
],
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,
itemBuilder: (context,index){
return ListTile(
title: Text(marsh[index].mrTitle),
您没有指定 FutureBuilder
的类型,例如:
providers: [
FutureProvider(
应该是:
providers: [
FutureProvider<List<TransportType>>(
我正在尝试使用 flutter Provider package 并且我有一个 API 我想在其中获取传输类型和路线标题的数据(这是沼泽class)。我决定使用 Future Provider ans,据我所知,如果我想使用 mu;tiproviders 我将需要在我的主要失败中使用 MultiProvider widhet 树的顶部。我按照文档中的描述做了同样的事情,但现在我有一个错误:“以下 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(),
catchError: (context, error) {
print(error.toString());
},
initialData: [],
),
],
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,
itemBuilder: (context,index){
return ListTile(
title: Text(marsh[index].mrTitle),
您没有指定 FutureBuilder
的类型,例如:
providers: [
FutureProvider(
应该是:
providers: [
FutureProvider<List<TransportType>>(