Flutter 一次展开一个扩展磁贴
我有一个扩展磁贴列表,每个扩展磁贴都包含一个列表磁贴。现在我要做的是在单击一个扩展平铺时折叠所有已扩展的平铺。我只想一次扩展并显示一个扩展磁贴。 或是否有任何方法可以将此迁移到扩展面板Flutter 一次展开一个扩展磁贴,flutter,flutter-layout,Flutter,Flutter Layout,我有一个扩展磁贴列表,每个扩展磁贴都包含一个列表磁贴。现在我要做的是在单击一个扩展平铺时折叠所有已扩展的平铺。我只想一次扩展并显示一个扩展磁贴。 或是否有任何方法可以将此迁移到扩展面板 child: Card( child: ExpansionTile( key: _expansionKey,
child: Card(
child: ExpansionTile(
key: _expansionKey,
backgroundColor: Colors.black12,
onExpansionChanged: (val) {
setState(() {
preId = prescriptionProvider
.doctorPrescriptions[index]
.prescriptionId;
fetchDoctorPrescriptionDrugsByDoctor(
preId);
});
Toast.show("Changed", context);
},
title: Text("Prescription ID : " +
prescriptionProvider
.doctorPrescriptions[index]
.prescriptionId),
children: <Widget>[
InkWell(
onTap: () {
},
child: ListView.builder(
itemCount: presciptionDrugList.length,
shrinkWrap: true,
itemBuilder:
(BuildContext context, int i) {
return ListTile(
title: Text(
presciptionDrugList.isNotEmpty
? presciptionDrugList[i]
.drugsName
: "loading",
),
trailing: Icon(FontAwesomeIcons.pills),
);
},
),
)
],
),
),
child:Card(
子文件:扩展文件(
密钥:_扩展密钥,
背景颜色:Colors.black12,
OneExpansionChanged:(val){
设置状态(){
preId=处方提供者
.医生处方[索引]
.处方d;
获取医生处方药药典(
preId);
});
Toast.show(“已更改”,上下文);
},
标题:文本(“处方ID:”+
处方提供者
.医生处方[索引]
.处方d),
儿童:[
墨水池(
onTap:(){
},
子项:ListView.builder(
itemCount:PresiptionDrugList.length,
收缩膜:对,
项目生成器:
(BuildContext,inti){
返回列表块(
标题:正文(
处方药列表。不是空的
?处方药清单[i]
药剂师
:“加载”,
),
尾随:图标(FontAwesomeIcons.pills),
);
},
),
)
],
),
),
因为我有一个列表数组变量,我在其中获取ListTile的数据,所以打开的tile将显示与我正在展开的tile相同的数据。因此,我想通过折叠它们来隐藏这一点。此示例是一个解决方法,它只会保持一个tile展开。它的问题是,每次扩展一个分幅时,它都会重新生成整个列表
class _MyHomePageState extends State<MyHomePage> {
final int max = 10;
int selected = -1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Builder(
key: Key('builder ${selected.toString()}'),
builder: (context){
return ListView(
children: <Widget>[
for(int i = 0; i < max; i++)
ExpansionTile(
key: Key(i.toString()),
title: Text('Tile ${i+1}'),
initiallyExpanded: i==selected,
onExpansionChanged: (expanded){
if(expanded)
setState(() {
selected = i;
});
else setState(() {
selected = -1;
});
},
)
],
);
},
)
);
}
}
class\u MyHomePageState扩展状态{
最终int最大值=10;
选定的整数=-1;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
车身:建造商(
key:key('builder${selected.toString()}'),
生成器:(上下文){
返回列表视图(
儿童:[
对于(int i=0;i
该示例似乎有效,但我无法相应地配置我的应用程序。你能用我上传的代码片段来完成吗?这个例子似乎很有效,但我无法相应地配置我的应用程序。你能用我上传的代码片段吗?它对我不起作用