更改 flutter 小部件中的布尔值

Changing a boolean value in a flutter widget

我有一个作业 class,其中有一个分配给它的任务列表。一切正常,但我正在尝试添加一个布尔字段以将作业标记为已完成。现在我没有检查所有的子任务。只是一个简单的复选框,表示作业是否完成。

我有一个数据文件,其中包含预定义的作业和任务。如果我将 true 或 false 分配给数据文件中的完整变量,它会全部加载,复选框会被填充,等等......但我无法更改该值,因为它是硬编码的。

如果我将值保留为未定义,则会出现布尔表达式不得为空错误。

因此,在我的小部件中,我生成了作业列表(可以按下以显示任务列表),我假设我需要在呈现列表之前初始化完整变量。在添加布尔变量之前,此小部件是一个无状态小部件,我已将其更改为有状态,因为我认为我需要 setState() 来更改布尔变量。但是由于作业在数据文件中,这就是我在尝试分配或更改布尔变量时遇到的问题。

任何关于我遗漏的指示都将不胜感激。

class Job {
  int jobID;
  List<Task> task_list;
  String imageURL;
  String jobName;
  bool complete;

  Job({
   this.jobId,
   this.task_list,
   this.imageURL,
   this.jobName,
   this.complete,
  });

} 

class Task{
   int taskID;
   String imageURL;
   String name;
   String type;
   int taskTime;
   

  Task({
    this.taskID,
    this.imageURL,
    this.name,
    this.type,
    this.taskTime,
  })
}

莫非数据文件是用sqflite生成的?如果是,必须将 bool 类型字段更改为 int 字段,使用 01 表示 bool

如果你想看到小部件的变化,你必须用 setState(() {complete = true});

包围声明

对于您的 Job class 构造函数,您能否更改:

Job({
   this.jobId,
   this.task_list,
   this.imageURL,
   this.jobName,
   this.complete,
  });

对此:

Job({
   this.jobId,
   this.task_list,
   this.imageURL,
   this.jobName,
   this.complete = false,
  });

complete 默认值 false 应该可以避免 must not be null 错误。我认为这是可以的,因为默认情况下不应完成一项工作,对吗?