在lwidget中显示ListView和Map函数

时间:2019-05-05 21:43:44

标签: flutter

我想添加一个带有元素的ListView。我在另一页上执行此操作,但是由于某种原因,它现在没有出现。

Widget comentCard(comentario) {
  return Container(
    width: 300,
    padding: EdgeInsets.symmetric(horizontal: 3),
    child: Card(
      elevation: 1,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.all(
          Radius.circular(30),
        ),
      ),
      child: Text('Some Text'),
    ),
  );
}

Widget comentarios() {
  return ListView(
    children: widget.model.cardComentarios.map((element) {
      for (var i = 0; i < widget.model.cardComentarios.length; i++) {
        return comentCard(element);
      }
    }).toList());
}



@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      automaticallyImplyLeading: true,
      title: Text('Title'),
      actions: [], // agregar boton a la derecha
    ),
    body: Container(child: comentarios()),
  );
}

如果我单击另一个按钮,有时会出现,但是我希望在页面加载时出现。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的comentarios方法错误。 map已经为您进行了迭代,因此您要迭代两次。

假设map包含类型A的列表,并将其映射到类型B的另一个列表。请检查示例:

var list = [1, 2, 3].map((int number) => number.toString());

print(list);  // Output: ['1', '2', '3']

您的comentarios方法必须是以下方法之一:

Widget comentarios() {
  List comentWidgetList;

  for (var i = 0; i < widget.model.cardComentarios.length; i++) {
    var comentCard = comentCard(widget.model.cardComentarios[i]);
    comentWidgetList.add(comentCard);
  }

  return ListView(
    children: comentWidgetList,
  );
}
Widget comentarios() {
  return ListView(
    children: widget.model.cardComentarios.map((element) {
      return comentCard(element);
    }).toList(),
  );
}