Как сделать высоту виджетов ListView.builder () высотой всего стека? - PullRequest
1 голос
/ 30 мая 2020

У меня есть ListView.builder () внутри столбца, и я хотел бы сказать LisView.builder, чтобы он установил высоту в соответствии с высотой виджета, который он будет возвращать из метода построителя. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Оберните ListView в SizedBox с фиксированной высотой. Установка высоты для детей нецелесообразна, поскольку Flutter должен будет проверять размер каждого элемента в списке и вычислять максимум.

0 голосов
/ 30 мая 2020

Я не уверен, но, глядя на ваш вопрос, похоже, что вы хотите отобразить список с размерами, которые принимают дочерние виджеты. Для этого мы можем назначить mainAxisSize: MainAxisSize.min столбцу и shrinkWrap: true Listview.builder

class _MyHomePageState extends State<MyHomePage> {
  List<String> itemsList = [
    "item0",
    "item1",
    "item2",
    "item3",
    "item4",
    "item5"
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("ListView Sample"),
      ),
      body: Container(
        color: Colors.black54,
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            ListView.builder(
              shrinkWrap: true,
                itemCount: itemsList.length,
                itemBuilder: (context, index) {
                  return Container(
                      child:
                      Align(
                        alignment: Alignment.centerRight,
                        child:Text(
                          itemsList[index],
                          style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                        ),),
                      width: 100,
                      height: 20,
                      margin: EdgeInsets.only(bottom: 10),
                      color: Colors.red);
                }),
          ],
        ),
      ),
    );
  }
}
...