【问题标题】:Flutter - Selecting a contact from list selects ALL contactsFlutter - 从列表中选择一个联系人会选择所有联系人
【发布时间】:2021-09-18 06:05:47
【问题描述】:

我有一个列表,在获得许可后显示电话联系人。我有一种标签功能来选择联系人。 发生的情况是,当我选择一个时,所有联系人都将值切换为 true。 我只需要选择一个更改为true。 这是代码,所以可能更清楚。

StatefulBuilder buildContactItem(Contact contact, double screenwidth, double screenheight) {
    return StatefulBuilder(
        builder: (BuildContext context, StateSetter setState) {
           
          return Column(
            children: [
              ListTile(
                dense: false,
                onTap: () {
                  setState(() {
                    isSelected = !isSelected;
                    if (isSelected == false) {
                      listContactosSeleccionados.removeWhere((element) =>
                          element.displayName == contact.displayName);
                    } else {
                      listContactosSeleccionados.add(contact);
                    }
                  });
                },
            contentPadding: const EdgeInsets.symmetric(horizontal: 18),
            trailing: buildIconListTile(isSelected),
            leading: ClipRRect(
              borderRadius: BorderRadius.circular(10),
              child: Container(
                height: screenheight*0.065,
                width: screenwidth*0.13,
                color: Color(0xffafb3af),
                child: Center(
                    child: Text(contact.initials(),
                        style: TextStyle(
                          fontFamily: "Raleway-SemiBold",
                          fontSize: 26,
                          color: Color(0xffe5e6e5),
                        ))),
              ),
            ),
            title: Text(contact.displayName ?? '',
                style: TextStyle(
                  fontFamily: "Raleway-Light",
                  fontSize: 18,
                  fontWeight: FontWeight.w300,
                  color: Color(0xffb3b3b3),
                )),
          ),
          Divider()
        ],
      );
    });
  }

【问题讨论】:

    标签: android flutter dart mobile


    【解决方案1】:

    如果您可以发布与联系人加载和选择处理相关的代码,那将会很有用。

    无论如何,问题可能与您处理选择的方式有关。 从代码中我可以看到,当其中一个联系人被点击时,您将 isSelected 设置为 true。

    我认为你只声明了一个isSelected,它适用于你的所有联系人。

    我将创建一个名为 isSelected 的布尔值数组,而不是单个布尔值。该数组的长度应与联系人的数量相同。

    然后我会给每个联系人一个从 0 开始的索引。

    然后我会将onTap 函数更改为这样工作:

    isSelected[index] = !isSelected[index];
     if (isSelected[index] == false) {
     //Your code
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-06
      • 2019-06-03
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      相关资源
      最近更新 更多