flutter - 如何将我的切换按钮映射到它们各自的变量?
问题描述
当用户按下其各自的切换按钮时,我想在屏幕上显示 12 张图像的集合。
为简单起见,我会说我有 3 张图片:
img.Image image1 = img.decodeImage(_imageFile.readAsBytesSync());
img.Image image2 = img.decodeImage(_imageFile2.readAsBytesSync());
img.Image image3 = img.decodeImage(_imageFile3.readAsBytesSync());
List<bool> isSelected = [true, false, false];
//only showing relevant portion of @build function
ToggleButtons(
color: Colors.teal,
selectedColor: Colors.blueGrey,
children: [
Icon(Icons.accessibility),
Icon(Icons.pets),
Icon(Icons.phone),
],
isSelected: isSelected,
onPressed: (index){
setState(() {
isSelected[index] = !isSelected[index];
print(isSelected);
});
},
),
根据用户按下的按钮,我想显示该图像。我不想为所有可能的组合编写 if-else 语句isSelected
,并且基于isSelected
列表我将显示图像,例如在其默认状态下[true, false, false]
仅image1
应显示。
我将如何获得所有可能的组合isSelected
?为此,我找到了 trotter 库:https ://pub.dev/packages/trotter ,但显然它不接受 bool 列表。
在我能够获得我的列表的所有可能组合之后,我该如何映射,每个图像到其各自的切换按钮?
解决方案
你可以在ListView.builder
这里使用。
将图像存储在一个数组中,例如List<Image> images = [image1, image2, image3,...]
.
代码将如下所示:
ListView.builder(
itemCount: isSelected.length,
itemBuilder: (context, index) {
// Only render the image if it is selected.
return isSelected[index] ? images[index] : Container();
},
);
最好通过创建一个类来抽象它(因为每个ListImage
调用它都有一个 isSelected 和 Image 。
如果您还有其他问题,请随时发表评论。谢谢 :)
推荐阅读
- c - 在C中搜索二叉树中的节点
- directus - docker中的Directus无法连接到docker中的mysql数据库
- javascript - 如何在Angular中圆chartjs栏角?
- rust - 如果 `L` 或 `R` 实现它,则为元组 `(L, R)` 实现标记特征
- datagridview - 再次:datagridview 不更新 observablecollection 更改
- python - 如何应用特征匹配方法来增强立体视差图结果
- flutter - 在 Flutter 中制作“事件动画”的正确方法是什么?
- gcc - 使用英特尔核心 2 双核处理器在旧 MBP 上从源代码构建 gcc
- android - 如何检测在某些 android 设备中不能更改活动轮换?
- google-apps-script - 更改一系列列的格式,而不是一次更改一个