【问题标题】:Change color of a list of string - Flutter更改字符串列表的颜色 - Flutter
【发布时间】:2020-12-07 20:24:59
【问题描述】:

我有一个字符串列表,我想在点击其中一个时更改颜色, 到目前为止,这是我的代码:

  var list = ["name", "city", "country", "email"];


appBar: AppBar(
    title:Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: List.generate(4, (index) {
            return GestureDetector(
              child: Container(
                margin: EdgeInsets.all(8),
                child: Text(
                  list[index],
                  style: TextStyle(color: Colors.red),
                ),
              ),
              onTap: () {},
            );
          }),
        ),
      
  ),

【问题讨论】:

  • 你的问题很不清楚。你能告诉你使用的是有状态小部件还是无状态小部件?
  • 有状态小部件

标签: android ios flutter dart gesturedetector


【解决方案1】:

考虑到它是一个有状态的小部件,您可以这样做:

var list = ["name", "city", "country", "email"];
List <int>tapped = [];

appBar: AppBar(
    title:Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: List.generate(4, (index) {
            return GestureDetector(
              child: Container(
                margin: EdgeInsets.all(8),
                child: Text(
                  list[index],
                  style: TextStyle(color: tapped.contains(index) ? Colors.red : Colors.black),
                ),
              ),
              onTap: () {
                if(tapped.contains(index)){
                  this.setState(() {tapped.remove(index);});
                } else {
                  this.setState(() {tapped.add(index);});
                }
              },
            );
          }),
        ),
      
  ),

【讨论】:

  • 这就是我所做的,它对我有用,添加一个变量 int selectedIndex;然后 int TextStyle(color : selectedIndex == index ? Colors.red : Colors.blue 和 setState ((){ selectedIndex = index; })
  • 是的。我认为所选文本的颜色应该保持选中状态,直到它们被取消选中。但是,如果您希望在选择另一种颜色时自动取消选择它们,那没关系!这只是你想要什么的问题。由于问题中没有提到,我做了你想要的。
猜你喜欢
  • 2012-04-13
  • 2013-03-30
  • 1970-01-01
  • 2019-02-18
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多