【问题标题】:Changing a boolean value in a flutter widget更改颤振小部件中的布尔值
【发布时间】:2021-04-19 20:48:49
【问题描述】:

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

我有一个数据文件,其中包含预定义的作业和任务。如果我将 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,
  })
}

【问题讨论】:

    标签: flutter boolean


    【解决方案1】:

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

    【讨论】:

    • 这个,我发现一个错误让它工作了,但由于每次应用程序重新启动时这是硬编码的,所以值返回为 false。有没有办法做到这一点并保持工作完成?这是我需要使用 Sql 或 Hive 的地方吗?
    • 在您提到数据文件的问题中,我假设它是 JSON,硬编码在您的 Flutter 项目文件中的某处?并且我们在启动时将这个字符串映射反序列化为JobTask 对象?之后,要在 JobTask 对象更改时保存它们,是的,某种永久存储、设备上的 sqlite、hive、sembast 甚至是设备上的纯文本文件都是可能的解决方案。设备外,通过 https 可能包括 firebase、hasura 等。
    【解决方案2】:

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

    【讨论】:

    • 感谢您对此的建议。我目前没有使用 SQL,但我想我很快就会迁移到它。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 2021-10-02
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2021-06-11
      • 2018-10-18
      • 2021-07-19
      • 2021-05-10
      相关资源
      最近更新 更多