Flutter 除了flatter中的listview.builder()之外,是否还有其他方法可以遍历build()中的列表和构建小部件?

Flutter 除了flatter中的listview.builder()之外,是否还有其他方法可以遍历build()中的列表和构建小部件?,flutter,dart,Flutter,Dart,假设我有一个字符串列表,我需要在Text()小部件中显示它,这样我就可以使用listview.builder()并通过索引遍历它,生成Text()小部件。 还有其他方法可以做到这一点吗 class Ask extends StatefulWidget { const Ask({Key key}) : super(key: key); @override _AskState createState() => _AskState(); } class _AskState ext

假设我有一个字符串列表,我需要在Text()小部件中显示它,这样我就可以使用listview.builder()并通过索引遍历它,生成Text()小部件。 还有其他方法可以做到这一点吗

class Ask extends StatefulWidget {
  const Ask({Key key}) : super(key: key);

  @override
  _AskState createState() => _AskState();
}

class _AskState extends State<Ask> {
  List<String> msg=['hi','hey','bye','how are you?'];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar:AppBar(title:Text("Show")),
      body:ListView.builder(
        itemCount: msg.length,
        itemBuilder: (context,index){
             return Text(
               '${msg[index]}'
             );
      })
    );
  }
}
类Ask扩展StatefulWidget{
常量Ask({Key}):super(Key:Key);
@凌驾
_AskState createState()=>\u AskState();
}
类_AskState扩展状态{
List msg=[“你好”,“你好”,“再见”,“你好吗?”];
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“显示”)),
正文:ListView.builder(
itemCount:msg.length,
itemBuilder:(上下文,索引){
返回文本(
“${msg[index]}”
);
})
);
}
}

我知道有三种方法可以在不使用ListView.builder的情况下显示小部件列表,您可以直接在列中使用它们,而不必担心固定的垂直大小,因为这种类型的列表的高度仅与子项的组合高度相同

  • 在列中使用for循环
  • 将类型的列表映射到小部件

  • 注意:如果小部件大小增加,您可能会出现下面的错误,因此请确保将您的列放在SingleChildScrollView中,这样可以使您的列可滚动。

    我知道有三种方法可以在不使用ListView.builder的情况下显示小部件列表,您可以直接在列中使用,而不必担心固定的垂直大小因为这种类型的列表的高度仅与子列表的合并高度相同

  • 在列中使用for循环
  • 将类型的列表映射到小部件

  • 注意:如果小部件的大小增加,您可能会出现下面的错误,因此请确保将您的列放在SingleChildScrollView中,以使您的列可滚动。

    是的,有两种方法,但我可以知道listview.builder有什么问题吗?因此,我可以帮助更好地使用列表视图,但如果我需要将列表视图放在一个列中,那么我需要使用expanded(表示占用整个空间,将我的其他vwidget推到屏幕的末尾)或container(但需要给出一个特定的高度)进行包装因此,我只想知道做同样事情的任何其他方法,我们也不能在构建内部使用循环,所以可以提及其他实现方法。当然,您可以使用循环,让我将答案添加到
    msg[index]
    $msg[index]
    。是的,有两种方法,但我可以知道listview.builder有什么问题吗?因此,我可以帮助更好地使用列表视图,但如果我需要将列表视图放在一个列中,那么我需要使用expanded(表示占用整个空间,将我的其他vwidget推到屏幕的末尾)或container(但需要给出一个特定的高度)进行包装因此,我只想知道做同样事情的其他方法,我们也不能在构建中使用循环,所以可以提及其他方法。当然,您可以使用循环,让我添加答案更改
    msg[index]
    $msg[index]
    。谢谢,但我对第一个选项有一个疑问:如果我将for循环放在列()中,它会抛出一个错误,对吗?因为它没有属性或属性用于。。。那么for循环应该在哪里呢?不,应该可以。我只是在dartpad中尝试了这三种方法,并发布了它。我可以知道你的错误是什么吗?确保如果在列中使用for循环,则不能有“{}”谢谢,但我对第一个选项有疑问:如果我将for循环放在列()中,它会抛出错误,对吗?因为它没有属性或属性用于。。。那么for循环应该在哪里呢?不,应该可以。我只是在dartpad中尝试了这三种方法,并发布了它。我可以知道你的错误是什么吗?确保如果在列中使用for循环,则不能有“{}”
     for (int i = 0; i < msg.length; i++) Text(msg[i]),
    
      ...List.generate(msg.length, (index) => Text(msg[index])).toList(),
    
     ...msg.map((e) => Text(e)).toList()