Флаттер: создать кнопку для каждого элемента в списке строк (дротик) - PullRequest
0 голосов
/ 12 мая 2019

У меня есть список строк (называемых namesList). Для каждой строки внутри списка я хочу создать кнопку с одним из имен.

Как вы можете видеть из кода ниже, я попытался использовать цикл for. Однако при воспроизведении кода я вижу только первую кнопку с текстом «Анна».

 import 'package:flutter/material.dart';
 class ButtonsWithName extends StatefulWidget{
 @override
   State<StatefulWidget> createState() {
   // TODO: implement createState
   return _ButtonsWithNameState();
   }
 }

 class _ButtonsWithNameState extends State<ButtonsWithName> {
   String name1;
   String name2; 
   String name3;
   String name4;
   String name5;
   var namesList = new List<String>();


 @override
 void initState() {
 name1 = 'Anna';
 name2 = 'Bernd';
 name3 = 'Christina';
 name4 = 'David';
 name5 = 'Elena',
 namesList.add(name1);
 namesList.add(name2);
 namesList.add(name3);
 namesList.add(name4);
 namesList.add(name5);

 super.initState();
 }


Widget _buildButtonsWithNames() {
 for(int i=0; i < namesList.length; i++){
  RaisedButton(child: Text(answerList[0]));
}
return RaisedButton[i];
}


 @override
 Widget build(BuildContext context) {
 return Scaffold(
   body: Wrap(children: <Widget>[
    _buildButtonsWithNames();
   ]);
 )
 }
}

Я ожидаю, что в конце будет 5 RaisedButtons с текстами списка строк, а именно кнопка с текстом «Анна», кнопка с текстом «Bernd» и т. Д. И т. П. Буду очень признателен за помощь в этом вопросе!

1 Ответ

1 голос
/ 12 мая 2019

Результат, который вы получили, нормальный, потому что ваш список _buildButtonsWithNames() возвращает всего одну кнопку вместо списка кнопок.Поэтому решение состоит в том, чтобы создать этот список, заполнить его, а затем вернуть.Смотрите ниже, как это должно быть:

import 'package:flutter/material.dart';

class ButtonsWithName extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _ButtonsWithNameState();
  }
}

class _ButtonsWithNameState extends State<ButtonsWithName> {
  String name1;
  String name2;
  String name3;
  String name4;
  String name5;
  var namesList = new List<String>();
  List<RaisedButton> buttonsList = new List<RaisedButton>();

  @override
  void initState() {
    super.initState();
    name1 = 'Anna';
    name2 = 'Bernd';
    name3 = 'Christina';
    name4 = 'David';
    name5 = 'Elena';
    namesList.add(name1);
    namesList.add(name2);
    namesList.add(name3);
    namesList.add(name4);
    namesList.add(name5);
  }

  List<Widget> _buildButtonsWithNames() {
    for (int i = 0; i < namesList.length; i++) {
      buttonsList
          .add(new RaisedButton(onPressed: null, child: Text(namesList[i])));
    }
    return buttonsList;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Wrap(children: _buildButtonsWithNames()));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...