Flutter:如何使用 getX 更改文本颜色?

Ama*_*wat 3 dart flutter 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();
              });
        },
      ),
Run Code Online (Sandbox Code Playgroud)

控制器的代码如下:

bool isSelected = false.obs;

  toogle() {
    isSelected = !isSelected;
  }
Run Code Online (Sandbox Code Playgroud)

小智 5

只需在控制器中创建一个列表来存储所选索引

  var plantAntigensSelected = [].obs;

  toogle(int index) {
    if (plantAntigensSelected.contains(index)) {
      plantAntigensSelected.remove(index);
    } else {
      plantAntigensSelected.add(index);
    }
  }
Run Code Online (Sandbox Code Playgroud)

你的 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);
              });
        },
      )
Run Code Online (Sandbox Code Playgroud)