我有以下问题。每当futurebuilder重新执行时,终端
中都会出现以下错误NoSuchMethodError:方法'[]'在null上调用
尽管如此,该应用程序仍能正常工作,因为总是会产生异常。
很遗憾,我还没有找到合适的答案。
void initState(){
_getdata = getdata();
super.initState();
}
Future getdata() async {
DocumentReference qn = Firestore.instance.collection("data").document("datatxt");
return qn.get();
}
...
child: FutureBuilder(
future: _getdata,
builder: (BuildContext context, snap){
return Container(
width: MediaQuery.of(context).size.width,
color: Colors.green,
child: Text(snap.data['Text1']),
);
},
),
Another exception was thrown: NoSuchMethodError: The method '[]' was called on null
答案 0 :(得分:0)
在Flutter上使用dart Futures(异步/等待)时,您应该准备3种可能状态的小部件。
我建议您使用FutureBuilder,通过检查构建器函数内部快照的ConnectionState,StreamBuilder的工作方式也相同。
我使用这种方法:
FutureBuilder(
future: _getdata,
builder: (BuildContext context, AsyncSnapshot snap){
switch (snapshot.connectionState) {
// Uncompleted State
case ConnectionState.none:
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
break;
default:
// Completed with error
if (snapshot.hasError)
return Container(Text(snapshot.error.toString()));
// Completed with data
return Container(
width: MediaQuery.of(context).size.width,
color: Colors.green,
child: Text(snap.data['Text1']),
);
)
引用Youtube