【发布时间】:2021-07-14 16:51:14
【问题描述】:
我正在尝试将参数传递给未来的实例,但我在 future: _getData 遇到了 _getData 的“错误实例成员无法在初始化程序中访问”,即使我已经在 initState 中对其进行了初始化。
class _DisplayListState extends State<DisplayList> {
late Future<QuerySnapshot> _getData;
Future<QuerySnapshot> getData(String value)async{
return await FirebaseFirestore.instance
.collection('x')
.where('a', isEqualTo: value)
.get();
}
@override
void initState(){
super.initState();
_getData = getData(widget.value);
}
Widget displayList = FutureBuilder(
future: _getData,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
return Container();
},
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: displayList,
);
}
}
我删除了getData 的参数,认为我应该先简化问题并尝试future: getData(),但我遇到了同样的错误。
我没有遇到错误的唯一方法是如果我这样做 - future: FirebaseFirestore.instance.collection('x').where('a', isEqualTo: 'something').get() for FutureBuilder。但这意味着我不能传递参数,我更愿意在长长的代码行中为此使用函数/变量。
future: FirebaseFirestore.instance.collection('x').where('a', isEqualTo: value).get() value=widget.value 在 initState 中被初始化会出现同样的错误。
【问题讨论】:
-
只需在
build方法中创建FutureBuilder- 为什么需要Widget displayList = FutureBuilder( ...呢?
标签: flutter google-cloud-firestore flutter-futurebuilder