Flutter for 循环以生成小部件列表

Has*_*sen 46 dart flutter

我有这样的代码,但我希望它遍历一个整数数组以显示动态数量的孩子:

return Container(
  child: Column(
    children: <Widget>[
      Center(
        child: Text(text[0].toString(),
            textAlign: TextAlign.center),
      ),
      Center(
        child: Text(text[1].toString(),
            textAlign: TextAlign.center),
      ),
    ],
  ),
)
Run Code Online (Sandbox Code Playgroud)

其中text变量是整数转换器列表,此处为字符串。我尝试添加一个函数来遍历数组并显示“子项”,但出现类型错误。不知道该怎么做,因为我是 Dart 和 Flutter 的新手。

Abb*_*s.M 110

你可以试试这个:

@override
  Widget build(BuildContext context) {
    List<int> text = [1,2,3,4];
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
        child: Column(
          children: [
            for ( var i in text ) Text(i.toString())
          ],
        ),
      ),
    );
Run Code Online (Sandbox Code Playgroud)

请注意,这是随着 dart 更新到 2.3 版而添加的。您可以阅读本文中的一些最佳更改

在 dart 2.3 之前提供的另一种方法是:

@override
  Widget build(BuildContext context) {
    List<int> text = [1,2,3,4];
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
        child: Column(
          children: List.generate(text.length,(index){
            return Text(text[index].toString());
          }),
        ),
      ),
    );
Run Code Online (Sandbox Code Playgroud)

  • 这需要启用“控制流集合” (2认同)

Eaw*_*web 25

假设您想要在 Column 小部件中循环某些小部件(例如 Text()),您可以在 Children 属性内添加一个循环。请参阅下面的示例:

Column(
   children: <Widget>[
      for (int i=0; i<3; i++)
         Text("Hello" + i)
   ],
)
Run Code Online (Sandbox Code Playgroud)


Sah*_*sha 10

你可以在这里尝试 .map 方法,

class Example extends StatelessWidget {

  List <int> exampleList =  [1,2,3,4];

  @override
  Widget build(BuildContext context) {
    return
      Container(
        child: Column(
            children: exampleList.map((i) => new Text(i.toString())).toList()
        ),
      );
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你的列表中有对象,这个方法会派上用场。还必须在最后使用.map()方法.toList()