Flutter: особенности отображения listview внутри виджета showdialog
А именно, проблема заключается в том, что ничего не отображается, пока listview не будет обёрнут в контейнер с указанной высотой. И это на самом деле проблема, т.к. в этом случае нельзя указать «резиновую» высоту. Обёртывание в виджет Expanded тоже не поможет. Остаётся один выход — рассчитывать высоту в случае динамического списка. Например:
Container(
height: EzsInfo["connectors"].length.toDouble()*72,
width: double.maxFinite,
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
padding: const EdgeInsets.all(8),
itemCount: EzsInfo["connectors"].length,
itemBuilder: (BuildContext context, int index) {
return Container(
//padding: EdgeInsets.symmetric(vertical: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 0,left: 0,right: 10),
child: Text(EzsInfo["connectors"][index]["station_name"],style: TextStyle(fontWeight: FontWeight.w100, fontSize: 8.0, color: Colors.black)),
),
Container(
width: 6.0,
height: 6.0,
decoration: BoxDecoration(
color: EzsInfo["connectors"][index]["status"]==3?Colors.grey:Colors.green,
shape: BoxShape.circle,
),),
Padding(
padding: const EdgeInsets.only(bottom: 0,left: 2,right: 0),
child: Text(EzsInfo["connectors"][index]["status_name"],style: TextStyle(fontWeight: FontWeight.w100, fontSize: 8.0, color: Colors.black)),
),
],
),
Row(
children: [
IconButton (
padding: const EdgeInsets.only(bottom: 0,left: 0,right: 0),
icon: Image.asset('lib/images/'+EzsInfo["connectors"][index]["url_connector"],height: 32,),
onPressed: () {print('IconButton pressed ...');},
),
Container(
alignment: Alignment.topLeft,
width: 150,
child: Column(
children: [
Align(
alignment: Alignment.topLeft,
child: Text(EzsInfo["connectors"][index]["connector_name"],style: TextStyle(fontSize: 12.0, color: Colors.black),textAlign: TextAlign.left,),
),
Align(
alignment: Alignment.topLeft,
child: Text(EzsInfo["connectors"][index]["maxpower"].toString()+" кВт",style: TextStyle(fontSize: 12.0, color: Colors.black),textAlign: TextAlign.left),
),
],
),
),
Text(EzsInfo["connectors"][index]["price"].toString()+"Р кВт*ч",style: TextStyle(fontSize: 12.0, color: Colors.black)),
],
),
new Divider(),
],
)
);
}
),
)
Результат:


