簡體   English   中英

如何在 flutter 的列表中獲取所選項目的值

[英]How to get the value of the selected Item in a list in flutter

我有一個小部件列表(具有不同文本子項的容器),我有一個 map 文本。 文本是不同的年齡范圍。

我已經能夠更改所選容器的顏色。

我將如何獲取所選容器中文本的值。

這是列表,

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
            ),
          ),
        ),
      ),
    );
  }
}

這是ageRange Map

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+"
);

這是容器

如果我理解正確,您需要將這行代碼添加到您的新聞回調中:

selectedAge = ageRange[index].age;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM