List 颤振:为字符串列表中的每个项目创建按钮(省道)

List 颤振:为字符串列表中的每个项目创建按钮(省道),list,for-loop,button,foreach,List,For Loop,Button,Foreach,我有一个字符串列表(称为namesList)。对于列表中的每个字符串,我想创建一个带有其中一个名称的按钮 正如您在下面的代码中所看到的,我已经尝试使用for循环。然而,当播放代码时,我只能看到第一个按钮上的文本“Anna” 导入“包装:颤振/材料.省道”; 类按钮WithName扩展StatefulWidget{ @凌驾 状态createState(){ //TODO:实现createState 返回带有名称状态()的按钮; } } 类_按钮WithNameState扩展状态{ 字符串名称1;

我有一个字符串列表(称为namesList)。对于列表中的每个字符串,我想创建一个带有其中一个名称的按钮

正如您在下面的代码中所看到的,我已经尝试使用for循环。然而,当播放代码时,我只能看到第一个按钮上的文本“Anna”

导入“包装:颤振/材料.省道”;
类按钮WithName扩展StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回带有名称状态()的按钮;
}
}
类_按钮WithNameState扩展状态{
字符串名称1;
字符串名称2;
字符串名称3;
字符串名称4;
字符串名称5;
var namesList=新列表();
@凌驾
void initState(){
名称1=‘安娜’;
name2='Bernd';
名称3=‘克里斯蒂娜’;
名称4=‘大卫’;
name5='Elena',
名称列表。添加(名称1);
名称列表。添加(名称2);
名称列表。添加(名称3);
名称列表。添加(名称4);
名称列表。添加(名称5);
super.initState();
}
小部件_buildButtonsWithNames(){
for(int i=0;i
我希望最后有5个RaisedButtons和字符串列表的文本,即一个带有文本“Anna”的按钮,一个带有文本“Bernd”的按钮,等等。
我真的非常感谢任何人在这件事上的帮助

您得到的结果是正常的,因为您的
\u 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()));
  }
}
导入“包装:颤振/材料.省道”;
类按钮WithName扩展StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回带有名称状态()的按钮;
}
}
类_按钮WithNameState扩展状态{
字符串名称1;
字符串名称2;
字符串名称3;
字符串名称4;
字符串名称5;
var namesList=新列表();
列表按钮列表=新列表();
@凌驾
void initState(){
super.initState();
名称1=‘安娜’;
name2='Bernd';
名称3=‘克里斯蒂娜’;
名称4=‘大卫’;
name5='Elena';
名称列表。添加(名称1);
名称列表。添加(名称2);
名称列表。添加(名称3);
名称列表。添加(名称4);
名称列表。添加(名称5);
}
列表_buildButtonsWithNames(){
for(int i=0;i
您得到的结果是正常的,因为您的
\u 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()));
  }
}
导入“包装:颤振/材料.省道”;
类按钮WithName扩展StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回带有名称状态()的按钮;
}
}
类_按钮WithNameState扩展状态{
字符串名称1;
字符串名称2;
字符串名称3;
字符串名称4;
字符串名称5;
var namesList=新列表();
列表按钮列表=新列表();
@凌驾
void initState(){
super.initState();
名称1=‘安娜’;
name2='Bernd';
名称3=‘克里斯蒂娜’;
名称4=‘大卫’;
name5='Elena';
名称列表。添加(名称1);
名称列表。添加(名称2);
名称列表。添加(名称3);
名称列表。添加(名称4);
名称列表。添加(名称5);
}
列表_buildButtonsWithNames(){
for(int i=0;i
这对我来说很有效,多亏了前面的答案,还有一些改进:

    import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  final player = AudioCache();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Container(
            child: PlaySoundButtons()
          ),
        ),
      ),
    );
  }
}

class PlaySoundButtons extends StatefulWidget {
  @override
  _PlaySoundButtonsState createState() => _PlaySoundButtonsState();
}

class _PlaySoundButtonsState extends State<PlaySoundButtons> {
  List<String> soundNames = [
    'note1.wav',
    'note2.wav',
    'note3.wav',
    'note4.wav',
    'note5.wav',
    'note6.wav',
    'note7.wav',
  ];
  List<FlatButton> buttonsList = [];

  final player = AudioCache();

  @override
  void initState() {
    super.initState();
    for (int i = 0; i <  soundNames.length; i++) {
      buttonsList.add(new FlatButton(onPressed: () {
        player.play(soundNames[i]);
      }, child: Text(soundNames[i])));
    }
  }

  @override
  Widget build(BuildContext context) {
    return Wrap(children: buttonsList);
  }
}
导入“包装:颤振/材料.省道”;
导入“包:AudioPlayer/audio_cache.dart”;
void main();
类XylophoneApp扩展了一个小部件{
最终播放器=AudioCache();
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:安全区(
子:容器(
孩子:PlaySoundButtons()
),
),
),
);
}
}
类PlaySoundButtons扩展StatefulWidget{
@凌驾
_PlaySoundButtonState createState()=>\u PlaySoundButtonState();
}
类_播放声音按钮状态扩展状态{
列出声音名称=[
‘注1.wav’,
“注2.wav”,
“注3.wav”,
“注4.wav”,
“注5.wav”,
“注6.wav”,
‘注7.wav’,
];
列表按钮列表=[];
最终播放器=AudioCache();
@凌驾
void initState(){
super.initState();
对于(int i=0;i
这对我来说很有效,多亏了前面的答案,还有一些改进:

    import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  final player = AudioCache();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Container(
            child: PlaySoundButtons()
          ),
        ),
      ),
    );
  }
}

class PlaySoundButtons extends StatefulWidget {
  @override
  _PlaySoundButtonsState createState() => _PlaySoundButtonsState();
}

class _PlaySoundButtonsState extends State<PlaySoundButtons> {
  List<String> soundNames = [
    'note1.wav',
    'note2.wav',
    'note3.wav',
    'note4.wav',
    'note5.wav',
    'note6.wav',
    'note7.wav',
  ];
  List<FlatButton> buttonsList = [];

  final player = AudioCache();

  @override
  void initState() {
    super.initState();
    for (int i = 0; i <  soundNames.length; i++) {
      buttonsList.add(new FlatButton(onPressed: () {
        player.play(soundNames[i]);
      }, child: Text(soundNames[i])));
    }
  }

  @override
  Widget build(BuildContext context) {
    return Wrap(children: buttonsList);
  }
}
导入“包装:颤振/材料.省道”;
导入“包:AudioPlayer/audio_cache.dart”;
void main();
类XylophoneApp扩展了一个小部件{
最终播放器=AudioCache();
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:安全区(
子:容器(
孩子:PlaySoundButtons()
),
),
),
);
}
}
类PlaySoundButtons扩展StatefulWidget{
@凌驾
_PlaySoundButtonState createState()=>\u PlaySoundButtonState();
}
类(PlaySoundBut)