更改颤振小部件中的布尔值

时间:2021-04-19 20:48:49

标签: flutter boolean

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

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

如果我不定义值,我会得到一个布尔表达式不能为空错误。

所以在我的 Widget 中,我生成了作业列表(可以按下它以显示任务列表),我假设我需要在呈现列表之前初始化完整变量。在我添加布尔变量之前,这个小部件是一个无状态小部件,我已经将它更改为有状态,因为我认为我需要 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,
  })
}

3 个答案:

答案 0 :(得分:0)

有没有可能是用sqflite生成的数据文件?如果是,则必须使用 boolint0 类型字段更改为 1 字段以表示 bool

答案 1 :(得分:0)

如果您想查看小部件的更改,您必须用 setState(() {complete = true});

将声明括起来

答案 2 :(得分:0)

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

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 错误。我认为这是可以的,因为默认情况下不应完成一项工作,对吗?