Flutter CheckBoxList 未选择

问题描述 投票:0回答:1

我有一个 ListViewBuilder,其中包含来自 Firestore 的数据。在我的列表中,我想返回一个 ListTile 并将 CheckBox 添加到 ListTile 或返回一个 CheckBoxListTile,以效果更好者为准。 但由于某些原因(据我所知),我在这两种情况下都无法选中该复选框。

当我返回带有单个复选框值的复选框的 ListTile 时,当我仅选择一个复选框时,它会检查所有复选框。当我尝试使用

checkList = []
将其设置为多重检查时,根本没有选择任何内容

当我返回 CheckBoxListTile 时,我也无法选择任何内容。有人可以帮我解决这个问题吗?我已经被困了很多年了。

这是我返回CheckBoxListTile的代码

List<int> selectedList = [];
List<bool> isCheckedList = [];

StreamBuilder(
          stream: FirebaseFirestore....
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemCount: snapshot.data!.docs.length,
                itemBuilder: (context, index) {
                  final info = snapshot.data!.docs[index];
                  isCheckedList =
                      List.filled(snapshot.data!.docs.length, false);
                  var timestamp = info.get("Time") as Timestamp;
                  final isRead = info.get("Read");

                  return CheckboxListTile(
                    controlAffinity: ListTileControlAffinity.leading,
                    activeColor: Colors.green,
                    checkColor: Colors.green,
                    tileColor: isRead == "No" ? Colors.teal.shade100 : null,
                    title: TextScroll(
                      "${info.get("title")}.  ",
                      velocity: const Velocity(pixelsPerSecond: Offset(30, 0)),
                      style: const TextStyle(fontWeight: FontWeight.bold),
                    ),
                    value: isCheckedList[index],
                    onChanged: (value) {
                      setState(() {
                        isCheckedList[index] = value!;
                        if (value) {
                          selectedList.add(index);
                        } else {
                          selectedList.remove(index);
                        }
                      });
                    },
                  );
                },
              );
            }

            return Center(
              child: Text("Whatever"),
            );
          },
        ),
flutter checkbox
1个回答
0
投票

isChecked
列表声明移至 ListView 构建器之外。现在,由于其在 ListView 中的位置,当选中一个复选框时,它会导致所有复选框重置。

© www.soinside.com 2019 - 2024. All rights reserved.