【问题标题】:How to get the value of the selected Item in a list in flutter如何在颤动的列表中获取所选项目的值
【发布时间】:2021-03-12 12:43:02
【问题描述】:

我有一个小部件列表(具有不同文本子项的容器),我有一个文本地图。文本是不同的年龄范围。

我已经能够更改所选容器的颜色。

我将如何获取所选容器中文本的值。

这是列表,

List.generate(
                    ageRange.length,
                      (index) {
                      return AgeSelector(
                        ageRange: ageRange[index],
                        textColor: selectedIndex == index ? Colors.white : Colors.black,
                        containerColor: selectedIndex == index ? kSecondaryColor :  Colors.white,
                        ageChoice: selectedIndex == index ? AgeRange(age: ageRange[index].toString()): Text('none'),
                        press: () {
                          setState(() {
                            selectedIndex = index;
                          });
                        },
                      );
                      }
                  ),

这是 AgeSelector 小部件,

    class AgeSelector extends StatelessWidget {
  const AgeSelector({
    Key key,
    this.ageRange, this.textColor, this.containerColor, this.press, this.ageChoice,
  }) : super(key: key);


  final AgeRange ageRange;
  final Color textColor, containerColor;
  final GestureTapCallback press;
  final String ageChoice;

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: press,
      child: Container(
        height: getProportionateScreenWidth(80),
        width: getProportionateScreenWidth(70),
        decoration: BoxDecoration(
          color: containerColor,
          borderRadius: BorderRadius.circular(15)
        ),
        child: Center(
          child: Text(
            ageRange.age,
            style: TextStyle(
              fontSize: getProportionateScreenWidth(22),
              color: textColor,
              fontWeight: FontWeight.bold
            ),
          ),
        ),
      ),
    );
  }
}

这是年龄范围地图

class AgeRange {
  final String age;

  AgeRange({
    @required this.age
  });
}

List <AgeRange> ageRange = [age1, age2, age3,age4];

AgeRange age1 = AgeRange(
  age : "10+"
);

AgeRange age2 = AgeRange(
    age : "20+"
);

AgeRange age3 = AgeRange(
    age : "30+"
);

AgeRange age4 = AgeRange(
    age : "40+"
);

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    如果我理解正确,您需要将这行代码添加到您的新闻回调中:

    selectedAge = ageRange[index].age;
    

    【讨论】:

    • 如何在文本小部件中显示选定的年龄?
    • 点赞:Text(selectedAge) 并用 setState() 包装此代码:selectedAge = ageRange[index].age;
    • 它说 selectedAge 为空;我定义了一个字符串 selectedAge 并设置 selectedAge = ageRange[index].age;在我的新闻回调中
    • 感谢您的帮助,我已经能够解决它。我定义了一个空字符串,即 String selectedAge = ' ' , selectedAge = ageRange[index].age;在我的新闻回调中
    • 我只是想告诉你)。我很乐意提供帮助)
    猜你喜欢
    • 2012-05-23
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多