如何解决Flutter:如何使用 getX 更改文本颜色?
我想在点击磁贴时更改 ListTile 文本的颜色,我该怎么做,而且颜色应该只为特定选定的磁贴更改。 我的方法如下:
ListView.builder(
itemCount: _antigen.plantAntigens.length,itemBuilder: (BuildContext cntxt,int index) {
return ListTile(
title: Text(
_antigen.plantAntigens[index],style: TextStyle(
color: controller.isSelected ? Colors.red : Colors.black87),),onTap: () {
controller.toogle();
});
},
控制器代码如下:
bool isSelected = false.obs;
toogle() {
isSelected = !isSelected;
}
解决方法
只需在您的控制器中创建一个存储所选索引的列表
var plantAntigensSelected = [].obs;
toogle(int index) {
if (plantAntigensSelected.contains(index)) {
plantAntigensSelected.remove(index);
} else {
plantAntigensSelected.add(index);
}
}
你的 ListView 是这样的
ListView.builder(
itemCount: plantAntigens.length,itemBuilder: (BuildContext cntxt,int index) {
return ListTile(
title: Obx(
() => Text(
plantAntigens[index],style: TextStyle(
color:
controller.plantAntigensSelected.contains(index)
? Colors.red
: Colors.black87),),onTap: () {
controller.toogle(index);
});
},)
,
控制器 Element element = document.appendElement("TEST")
将保存已选择的图块(通过使用 TileColorX
提供的索引)。
ListView.builder
,
请尝试在 onTap 中使用 setState ,如下所示
onTap: () {
setState(() {
controller.toogle();
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。