提问人:MaybeExpertDBA 提问时间:9/15/2021 更新时间:9/15/2021 访问量:714
Flutter 错误:对 null 值使用了 Null 检查运算符
Flutter Error: Null check operator used on a null value
问:
我想在 flutter 中开发银行应用程序。 但是我收到此错误:在空值上使用空检查运算符 我尝试了“颤振通道稳定”,但它不起作用,还尝试了“!”运算符(如您在代码中看到的那样),但它不起作用...... :(
请帮帮我.. 注意:容器小部件很长,这就是我没有选择复制的原因。
Widget projectWidget() {
return FutureBuilder<List<Histories>>(
future: dbHelper.getHistories(),
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.data!.length > 0) return Container();
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
Histories histories = snapshot.data![index];
return Container();
},
);
});
}
答:
1赞
FrancescoPenasa
9/15/2021
#1
你的 if 语句有问题,以这种方式,你尝试在数据仍然不存在时访问数据,请尝试如下操作
return FutureBuilder<List<Histories>>(
future: dbHelper.getHistories(),
builder: (BuildContext context, AsyncSnapshot<List<Histories>> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
Histories histories = snapshot.data![index];
return Container();
},
);
} else if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else {
print('error');
return Text('error');
}
});
或者你可以用你的 if 语句代替它,如下所示if (snapshot.connectionState == ConnectionState.done)
return FutureBuilder<List<Histories>>(
future: dbHelper.getHistories(),
builder: (BuildContext context, AsyncSnapshot<List<Histories>> snapshot) {
if (snapshot.hasData && snapshot.data!.length > 0) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
Histories histories = snapshot.data![index];
return Container();
},
);
} else if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else {
print('error');
return Text('error');
}
});
2赞
aman
9/15/2021
#2
在构建器内部,其他条件是错误的。使用当前代码,即使快照没有数据,它也会尝试调用,这就是导致 null 错误的原因。snapshot.data!.length
Widget projectWidget() {
return FutureBuilder<List<Histories>>(
future: dbHelper.getHistories(),
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.data!.length > 0)
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
Histories histories = snapshot.data![index];
return Container();
},
);
else
return Center(child: CircularProgressIndicator());
});
}
评论