【问题标题】:Flutter: Conditional switches and adding/removing from a listFlutter:条件开关和从列表中添加/删除
【发布时间】:2020-05-21 21:15:38
【问题描述】:

我正在尝试创建一个可以在列表中添加或删除值的开关。

我已经为我的开关创建了有状态的小部件和一个布尔变量:

class CustomisePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _CustomisePageState();
  }
}

class _CustomisePageState extends State<CustomisePage> {
  List<String> names = ["Name 1", "Name 2", "Name 3", "Name 4"];
  bool isSwitched = true;

我使用条件语句创建了我的开关,检查开关是否“打开”,并且列表不包含值“名称 1”,然后将该值添加到列表 names。如果开关“关闭”,它会从列表中删除“名称 1”。

SwitchListTile(
  activeColor: Colors.amber,
  value: isSwitched,
  onChanged: (value) {
    setState(() {
      isSwitched = value;
      if (isSwitched = true && names.contains("Name 1") = false) {
        names.add("Name 1");
      } else {
        names.remove("Name 1");
      }
    });
  },
  title: Text("Name 1"),
  secondary: const Icon(Icons.add),
)

然而,这个问题是 Flutter/Dart 不喜欢我创建的“games.contains("Name 1") = false”语句来检查值是否在列表中。

我非常感谢任何帮助,甚至是关于改进我的代码以使其更高效的建议!

【问题讨论】:

  • 嘿,感谢您进行编辑!

标签: flutter dart


【解决方案1】:

试试isSwitched == true &amp;&amp; names.contains("Name 1") == false 或更好的isSwitched &amp;&amp; !names.contains("Name 1")

使用单个= 是一个不能在这里完成的任务

【讨论】:

    【解决方案2】:

    如前所述,使用单个 = 用于赋值,它不是可比较运算符,如果要检查是否相等,则必须使用此 == 运算符。

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多