提问人:Pulkit Aggarwal 提问时间:4/23/2023 最后编辑:Cavin MacwanPulkit Aggarwal 更新时间:4/24/2023 访问量:34
关于用于 null 值的 null 检查运算符
Regarding Null Check Operator Used on a Null Value
问:
BlocBuilder<SettingsBloc, SettingsState> _buildOpeningHours() {
return BlocBuilder<SettingsBloc, SettingsState>(
builder: (context, state) {
if (state is SettingsLoading) {
return const SizedBox();
}
if (state is SettingsLoaded){
return ListView.builder(
itemBuilder: (context, index){
var openingHours= state.clinic.openingHours![index];
return OpeningHoursSettings(
openingHours: openingHours,
onCheckboxChanged: (value){
context.read<SettingsBloc>().add(UpdateOpeningHours(openingHours: openingHours.copyWith(isOpen: openingHours.isOpen)));
}, onSliderChanged: (value) {
context.read<SettingsBloc>().add(UpdateOpeningHours(openingHours: openingHours.copyWith(openAt: value.start, closeAt: value.end)));
},
);
},
shrinkWrap: true,
itemCount: state.clinic.openingHours!.length,
);
}else{
return Text('Something went Wrong');
}
}
);
我很确定问题出在,
这部分itemCount: state.clinic.openingHours!.length
如果我将那行更改为,那么它什么都不显示state.clinic.openingHours?.length??0
但如果我把它改成state.clinic.openingHours?.length??7
它显示相同的错误
答:
0赞
Jonas Badstübner
4/23/2023
#1
如果将版本与版本放在一起,则会在另一行中收到错误:因为 itemBuilder 不会被调用,除非与 0 不同。
由于为 null,因此加法使 be 为 0。当您尝试访问空值中的索引时,您不会收到错误,因为该函数甚至没有执行一次。据我所知,确实最有意义。 ?? 7
var openingHours= state.clinic.openingHours![index];
itemCount
state.clinic.openingHours
?? 0
itemCount
itemBuilder
?? 0
我建议查看您运行 Flutter 应用程序的终端/控制台中的调试输出。学习如何读取堆栈跟踪非常有帮助。
评论