Flutter ExpansionPanel 不在 ListView 上展开
Posted
技术标签:
【中文标题】Flutter ExpansionPanel 不在 ListView 上展开【英文标题】:Flutter ExpansionPanel don't expand on ListView 【发布时间】:2019-12-15 21:10:29 【问题描述】:在这个简单的代码中,我试图在ListView
中添加ExpansionPanelList
,在实现之后,ExpansionPanel
在单击以展开或折叠后不会展开
import 'package:flutter/material.dart';
void main()=>runApp(MaterialApp(home: App()));
class App extends StatefulWidget
@override
State<StatefulWidget> createState()=>_App();
class _App extends State<App>
List<NewItem> items = [];
@override
Widget build(BuildContext context)
items=[];
List.generate(5, (int index)
items.add(NewItem(
false,
'aaaaa',
Container(child:Text('1')),
Container(child:Text('2')),
));
);
return Scaffold(body: ListView(
children: [
new Padding(
padding: new EdgeInsets.all(10.0),
child: new ExpansionPanelList(
expansionCallback: (int index, bool isExpanded)
setState(()
items[index].isExpanded = !items[index].isExpanded;
);
,
children: items.map((NewItem item)
return new ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded)
return new ListTile(
leading: item.image,
title: new Text(
item.header,
textAlign: TextAlign.right,
style: new TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.w400,
),
));
,
isExpanded: item.isExpanded,
body: item.body,
);
).toList(),
),
)
],
),);
class NewItem
bool isExpanded;
final String header;
final Widget body;
final Widget image;
NewItem(this.isExpanded, this.header, this.body, this.image);
【问题讨论】:
【参考方案1】:问题解决了
@override
void initState()
super.initState();
List.generate(5, (int index)
items.add(NewItem(
false,
'aaaaa',
Container(child:Text('1')),
Container(child:Text('2')),
));
);
【讨论】:
以上是关于Flutter ExpansionPanel 不在 ListView 上展开的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Slider 未在 ExpansionPanel 内部重建
Flutter Wrap 小部件对齐:在 ExpansionPanel 内部
Flutter学习日记之ExpansionPanel/ExpansionTile实现分级列表(可开闭)