我正在使用 Provider Package 和 ListView.Builder 来快速构建简单的TodoList应用。
TaskModel.dart
class TaskModel { //Model class for the data to be stored
String task;
bool isCompleted;
String get getTask => task;
bool get getIsCompleted => isCompleted;
TaskModel({this.task, this.isCompleted});
}
Tasker.dart
class Tasker extends ChangeNotifier {
List<TaskModel> myTasks = [];
void addTask(TaskModel taskToAdd) {
myTasks.add(taskToAdd);
notifyListeners();
}
}
现在有一个 ListView.Builder ,我正在其中尝试从 Tasker 类访问 myTasks 。
Consumer<Tasker>(
builder: (context, newTask, child) {
return ListView.builder(
itemCount: newTask.myTasks.length, //The error is when accessing newTask.myTasks
itemBuilder: (context, index) {
return ListTile(.....);
});
},
),
错误消息是 *
获取器'myTasks'在null上被调用。接收方:null尝试调用: myTasks
*
答案 0 :(得分:0)
我认为您想念的是连接您的课程的提供者,因为如果您不先定义它,就无法检测到您的模型
return ChangeNotifierProvider<TaskModel>( // <--- ChangeNotifierProvider
create: (context) => TaskModel(),
child:Consumer<Tasker>(
builder: (context, newTask, child) {
return ListView.builder(
itemCount: newTask.myTasks.length, //The error is when accessing newTask.myTasks
itemBuilder: (context, index) {
return ListTile(.....);
});
},
),