Как изменить значения в функции OnTap при использовании в for l oop во Flutter - PullRequest
1 голос
/ 09 июля 2020

Вот как выглядит мой код:

        List<Widgets> abc = [];

        for(int a = 0;a<5;a++)
        {
        abc.add(FlatButton(onTap:(){ print(a);},
                           child:Text("Hello - ${a}")
                           )
                 );
        }

Когда пользователь нажимает кнопку «Hello - 2», я хочу, чтобы вывод на консоли был 2, но отображаемый вывод - 5.

Я упростил исходную проблему в форме этого небольшого вопроса по программированию. Я много проверял на inte rnet, но не смог получить никакого ответа. Помогите, пожалуйста !!

Ответы [ 2 ]

0 голосов
/ 09 августа 2020

Вам нужно сохранить номер в каждой кнопке. Что-то вроде этого. Я понятия не имею, как использовать флаттер, поэтому, как бы вы это ни делали, делайте это именно так.

class customButton extends StatelessWidget {
int number = 0;
@override
customButton(int num){
  this.number = num;
}
@override
Widget build(BuildContext context){
return Text('button content' + number.toString());
}
}

class _MyHomePageState extends State<MyHomePage> {

@override
Widget build(BuildContext context) {
List<customButton> buttons = new List();

for(int a = 0; a < 5; a++){
  buttons.add(new customButton(a));
}

return Scaffold(
  appBar: AppBar(
    title: Text(widget.title),
  ),
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: buttons
    ),
  )
);
}
}
0 голосов
/ 09 июля 2020

Ваш код работает нормально.

List<Widget> abc = [];

  @override
  Widget build(BuildContext context) {
    for (int a = 0; a < 5; a++) {
      abc.add(FlatButton(
          onPressed: () {
            print(a);
          },
          child: Text("Hello - $a")));
    }
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: ListView.builder(
          itemCount: abc.length,
          itemBuilder: (context, index) {
            return abc[index];
          },
        ),
      ),
    );

И как он может вернуть 5, когда максимальное значение a равно 4?

...