body: Container(color: Colors.white,
child: SingleChildScrollView(
child : Column(
children : [
Padding(padding: EdgeInsets.only(left : 23.0, top: 23.0, right: 23.0, bottom: 5.0),
child : Text("Title", style: MyTextStyles.textNormal,)),
ListView.builder(
padding: EdgeInsets.only(left: 13.0, right: 13.0, bottom: 25.0),
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: PersonModel.icData.length,
itemBuilder: (context, index) {
PersonModel _model = PersonModel.icData[index];
return Column(
children: <Widget>[
Divider(
height: 17.0,
color: MyColors.white,
),
ExpansionTile(
key: PageStorageKey<String>(index.toString()),
initiallyExpanded: false,
leading:
new ClipOval(
child: SvgPicture.asset(
_model.picture,
height: 57.0,
width: 57.0,
),
),
title: Text(_model.title,style: TextStyle(color: Color(0xFF09216B), fontFamily: 'ProximaNova-Bold')),
subtitle: Text(_model.subtitle, style: TextStyle(color: Colors.black, fontSize: 13.0,),),
children: <Widget>[
Padding(padding: EdgeInsets.only(left: 20.0, top: 15.0),
child : Text(_model.title + ' ' +_model.detail,)
)
],
onExpansionChanged: ((newState){
print(' is now : ' + newState.toString());
})
),
]
//trailing:
);
},
)
]
),
)
),
字符串
example
我尝试在Flutter中使用ExpansionTile创建人员列表。人员列表有属性和详细信息。我希望第一个ExpansionTile的项目默认是打开的。我想当我点击另一个项目时,当前项目将关闭。所以只有一个项目将始终打开。我怎么做?谢谢。
3条答案
按热度按时间vsdwdz231#
这个伟大的解决方案
字符串
x7yiwoj42#
你可以使用
initiallyExpanded: index == 0
来代替initiallyExpanded: false,
。通过这样做,你将检查你的项目的索引,如果它是0,它将被初始化。字符串
要在选择项目后折叠
ExpandedTile
,您可以检查以下链接Flutter - Collapsing ExpansionTile after choosing an item
Flutter- ExpansionTile expand and collapse on click的
6ioyuze23#
在简单的情况下,或者如果你只有一个元素作为子元素,只需添加
initiallyExpanded: true
作为ExpansionTitle
的参数。顾名思义,这将使它最初扩大。
字符串