Нил sh Ратод действительно дал описательный ответ на то же самое. Во флаттере также есть способ добиться этого, который очень похож на POJO class
, -
- Чтобы создать собственный виджет и указать поля, которые необходимо передать, когда мы используем виджет
- Добавьте виджет в список с данными, указанными для передачи
- Вы можете отслеживать идентификатор, нажимая его также
Я ясно вижу, что, вы создали свой собственный виджет с именем ButtonForHome
, который на данный момент принимает label
. Что вы можете сделать, так это сделать так, чтобы ваш виджет принимал два аргумента, и вы можете сделать это следующим образом:
class ButtonForHome extends StatelessWidget {
final String label;
final int id; // this will save your day
// @required will not let user to skip the specified key to be left null
ButtonForHome({@required this.label, @required this.id});
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: RaisedButton(
color: Colors.blue,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
child: Text(this.label),
onPressed: () => print(this.id) // Here you print your id using your button only
)
);
}
}
Теперь создайте кнопку со списком или добавите через список
- Вы можете сделать это через
ListView.builder()
- Вы можете сделать это своим способом, т.е.
List<Widget>.add()
Я покажу решение только на вашем пути:
Widget getTextWidgets(List<String> strings){
List<Widget> list = new List<Widget>();
for(var i = 0; i < strings.length; i++){
list.add(ButtonForHome(
id: i, // passing the i value only, for clear int values
label: strings[i]
));
}
return Column(children: list);
}
С новым флаттером вам не нужно делать new
каждый раз при определении виджета. Теперь он понимает, поэтому нет необходимости в const
, new
Итак, где бы вы ни заполняли свой getTextWidget
, он будет отображать Widgte ButtonForHome
, который имеет уникальный id
и label
. Теперь ButtonForHome
печатает id
того конкретного виджета, который был передан уникальным образом. Итак, теперь вы можете видеть, как происходит ваш результат.
Надеюсь, это то, что вы искали. Попробуйте и дайте мне знать.