Создать кнопки внутри обтекания из списка <String>flutter - PullRequest
0 голосов
/ 29 мая 2020

У меня есть List<String>, и я хочу сгенерировать внутри виджета Wrap N Buttons (длина строки N).

Я читал о List.generate, я пытаюсь чтобы реализовать это, знаете, как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 29 мая 2020
Wrap(
    children:buttons.map((s)=>
                        MaterialButton(
                          //shape,color etc...
                        onPressed:(){
                          //todo
                        },
                          child:Text(s)
                        )).toList()
    )
0 голосов
/ 29 мая 2020

Сначала создайте свои кнопки:

final strings = ['A', 'B'];
final buttons = List<Widget>.generate(
  strings.length,
  (i) => RaisedButton(
    onPressed: null,
    child: Text(strings[i]),
  ),
).toList();

А затем используйте их непосредственно как дочерние элементы Wrap:

Wrap(children: buttons)
0 голосов
/ 29 мая 2020

Я решил таким образом:

List<Widget> _ButtonsList(){
  List<String> list = _getLanguages(); 
  List listings = new List<Widget>();
  int lenght = list.length;
  for (int i=0;i<=lenght; i++){
    listings.add(_getrandomButton(list[i]));
  }
return listings;
}

Widget _myWrap(){
Wrap(
 spacing: 12,
 children: _ButtonsList(),
);
}

Но мне сказали, что я звонил list.split на null

Future<String> _read(String filename) async {
  try {
  final file = await _localFile(filename);

// Read the file.
return await file.readAsString();
} catch (e) {
// If encountering an error, return 0.
return "Can't read";
 }
}

String _myRead( String filename){
var _bio;

_read(filename).then((String) {
  _bio = String;
 });
 return _bio;
}

List<String> _getLanguages() {
 String _bio= _myRead("bio.txt");
 List<String> list =_bio.split(",");
 return list;
}

Это то, что у меня внутри "bio.txt" : Engli sh, итальянский, китайский

...