Error: The method 'add' was called on null. Receiver: null Tried calling: add("Test"), In flutter map
Error: The method 'add' was called on null. Receiver: null Tried calling: add("Test"), In flutter map
有一个 Dismissible 小部件具有 'undo' 项目映射删除的功能。当我关闭不是您在地图上输入的最后一个项目时,它工作正常,但是当该项目是您输入的最后一个项目时,它会抛出此错误:
The method 'add' was called on null.
Receiver: null
Tried calling: add("Test")
这是代码:
return Dismissible(
key: Key(event),
child: ....my child
onDismissed: (direction) {
setState(() {
_events[_thisDay].remove(event);
if(_events[_thisDay].length == 0){
_events.remove(_day);
}
});
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(
"Event $event dismissed !"),
action: SnackBarAction(
label: "Undo",
onPressed: () => setState(() =>_events[_thisDay].add(event))), // HERE
));
},
background: Container(color: Colors.red),
);
*我该如何处理这个错误? _events 为空。 _thisDay 不是
您可以检查 null
,然后将 _events[_thisDay]
初始化为空 Map
。您的代码应如下所示:
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(
"Event $event dismissed !"),
action: SnackBarAction(
label: "Undo",
onPressed: () {
setState(() {
_events[_thisDay] ??= <DateTime, String>{}; // if null, will be assigned to an empty map
_events[_thisDay].add(event);
});
}),
));
有一个 Dismissible 小部件具有 'undo' 项目映射删除的功能。当我关闭不是您在地图上输入的最后一个项目时,它工作正常,但是当该项目是您输入的最后一个项目时,它会抛出此错误:
The method 'add' was called on null. Receiver: null Tried calling: add("Test")
这是代码:
return Dismissible(
key: Key(event),
child: ....my child
onDismissed: (direction) {
setState(() {
_events[_thisDay].remove(event);
if(_events[_thisDay].length == 0){
_events.remove(_day);
}
});
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(
"Event $event dismissed !"),
action: SnackBarAction(
label: "Undo",
onPressed: () => setState(() =>_events[_thisDay].add(event))), // HERE
));
},
background: Container(color: Colors.red),
);
*我该如何处理这个错误? _events 为空。 _thisDay 不是
您可以检查 null
,然后将 _events[_thisDay]
初始化为空 Map
。您的代码应如下所示:
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(
"Event $event dismissed !"),
action: SnackBarAction(
label: "Undo",
onPressed: () {
setState(() {
_events[_thisDay] ??= <DateTime, String>{}; // if null, will be assigned to an empty map
_events[_thisDay].add(event);
});
}),
));