gpt4 book ai didi

listview - 只允许扩展一个 ExpansionTile

转载 作者:行者123 更新时间:2023-12-05 07:26:03 26 4
gpt4 key购买 nike

我的问题是:

Flutter 有没有办法只允许扩展动态生成的 ListView 的一个 ExpansionTile?

例如我的 ListView 有三个 ExpansionTiles,我点击第一个,它展开了。现在,如果我点击第二个,第二个应该展开,而第一个应该自行关闭。

我想过使用这个修改过的 ExpansionTile ( https://stackoverflow.com/a/48935106/3775957 ),但想不出一个解决方案。

在我看来,它应该像将此任务放入“onExpansionChanged”方法一样工作,但我不知道如何操作。

我这样构建我的 ListView:

ListView.builder(
itemCount: myArray.length,
itemBuilder: (context, index) {
return ExpansionTile(
backgroundColor: Colors.grey[200],
key: PageStorageKey('${myArray[index].name}'),
title: Text(myArray[index].name),
children: _buildChildrenWidgets(
groupName: myArray[index].name,
childrenNames: myArray[index].anotherArray),
);
});

最佳答案

你可以使用ExpansionPanelList像这样

 ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int i) {
return Card(
child: ExpansionPanelList(
expansionCallback: (int index, bool status) {
setState(() {
_activeMeterIndex =
_activeMeterIndex == i ? null : i;
});
},
children: [
ExpansionPanel(
isExpanded: _activeMeterIndex == i,
headerBuilder:
(BuildContext context, bool isExpanded) =>
Container(
padding: const EdgeInsets.only(left: 15.0),
alignment: Alignment.centerLeft,
child: Text(
snapshot.data[i].category,
),
),
body: Column(
children: snapshot.data[i].subcategory.map((e) {
return Text(e);
}).toList(),
),
),
],
),
);
},
);

关于listview - 只允许扩展一个 ExpansionTile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54534864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com