#flutter #dart
#flutter #dart
Вопрос:
У меня есть список виджетов (контейнер с другим дочерним элементом Texts), у меня есть карта текстов. Тексты имеют разные возрастные диапазоны.
Я смог изменить цвет выбранного контейнера.
Как я получу значение текста в выбранном контейнере.
Вот список,
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 "
);
Ответ №1:
Если я вас правильно понял, вам нужно добавить эти строки кода в свой обратный вызов press:
selectedAge = ageRange[index].age;
Комментарии:
1. как я буду отображать выбранный возраст в текстовом виджете?
2. Например:
Text(selectedAge)
и оберните этот код:selectedAge = ageRange[index].age;
с помощью setState()3. в нем говорится, что selectedAge равно нулю; я определил строку selectedAge и установил selectedAge = AgeRange[index].age; в моем обратном вызове press
4. Спасибо за вашу помощь, я смог ее решить. я определил пустую строку, т.е. Строку selectedAge = ‘ ‘ , selectedAge = AgeRange[index].age; в моем обратном вызове
5. Я просто хотел вам это сказать). Я рад помочь)