没有这样的方法错误。该吸气剂被调用为null

时间:2020-06-12 07:53:57

标签: flutter flutter-layout flutter-provider

我正在使用 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

*

1 个答案:

答案 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(.....);
                        });
                  },
                ),