如何解决使用提供程序在 null 上调用 flutter add 方法
您好,我想在我的列表中添加一些值。我已经用谷歌搜索了解决方案,但除了初始化我所做的列表之外,我看不到任何其他解决方案。
当我尝试向 AutomaticDateList 类添加项目时,出现错误:
'add' 方法在 null 上被调用。
接收器:空
尝试调用: add(Instance of 'AutomaticDate')
这是包含列表的类。
class AutomaticDateList with ChangeNotifier {
List<AutomaticDate> items = []; // here I inialize
AutomaticDateList({this.items});
void addToList(AutomaticDate automaticDate) {
items.add(automaticDate);
notifyListeners();
}
List<AutomaticDate> get getItems => items;
}
这是我想添加到列表中的项目。
class AutomaticDate with ChangeNotifier {
String date;
String enterDate;
String leaveDate;
String place;
AutomaticDate({this.date,this.enterDate,this.leaveDate,this.place});
这里我使用页面小部件内的提供程序调用该方法
void onGeofenceStatusChanged(Geofence geofence,GeofenceRadius geofenceRadius,GeofenceStatus geofenceStatus) {
geofenceController.sink.add(geofence);
AutomaticDate automaticDateData = AutomaticDate();
automaticDateData.place = geofence.id;
automaticDateData.date = DateFormat("dd-mm-yyyy").format(DateTime.now());
if (geofenceStatus == GeofenceStatus.ENTER) {
widget.enterDate = DateFormat("HH:mm:ss").format(DateTime.now());
} else {
automaticDateData.leaveDate =
DateFormat("HH:mm:ss").format(DateTime.now());
automaticDateData.enterDate = widget.enterDate;
widget.list.add(automaticDateData);
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
AutomaticDateList automaticDateList =
Provider.of<AutomaticDateList>(context,listen: false);
automaticDateList.items.add(automaticDateData); // Here I add the data and get error "add was called on null"
print(automaticDateList.getItems);
});
}
}
解决方法
问题在于初始化:
List<AutomaticDate> items = []; // here I inialize
AutomaticDateList({this.items});
您设置了一个默认值,但是您在构造函数中使用了“自动分配”语法,表示在参数中传递的项将在 items 属性中分配 班级。
您正在使用以下代码实例化类:
AutomaticDate automaticDateData = AutomaticDate();
因此,您将“null”作为参数隐式传递,然后 items []
被替换为 null
值。
只需将代码更改为:
List<AutomaticDate> item;
AutomaticDateList({this.items = []}); // Default value
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。