我的问题是:
在Flutter中,是否有一种方法可以只允许动态生成的ListView中的一个ExpansionTile展开?
例如,我的ListView有三个ExpansionTiles,我点击第一个,它会展开。现在,如果我点击第二个,第二个应该展开,而第一个应该关闭自己。
我考虑使用这个修改后的ExpansionTile(https://dev59.com/jVUM5IYBdhLWcg3wYvXl#48935106),但是无法想出解决方案。
在我的脑海中,它应该像将此任务放入“onExpansionChanged”方法中一样工作,但我不知道如何做到。
我像这样构建我的ListView:
在Flutter中,是否有一种方法可以只允许动态生成的ListView中的一个ExpansionTile展开?
例如,我的ListView有三个ExpansionTiles,我点击第一个,它会展开。现在,如果我点击第二个,第二个应该展开,而第一个应该关闭自己。
我考虑使用这个修改后的ExpansionTile(https://dev59.com/jVUM5IYBdhLWcg3wYvXl#48935106),但是无法想出解决方案。
在我的脑海中,它应该像将此任务放入“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),
);
});
ExpansionTile
构造函数中有一个initiallyExpanded
参数,因此在创建新的ExpansionTile
时请使用它。 - pskinkExpansionTile
都是使用initiallyExpanded
的默认值false
创建的。问题出现在运行时:当我点击另一个 Tile 来展开它时,其他已经展开的 Tile 仍然保持展开状态。但是我希望当另一个 Tile 展开时,其他的都关闭。 - Kajetan JaukExpansionTile
时重建布局对性能来说不是太重了吗? 因为我的瓷砖不是静态的,我使用FutureBuilder
从json文件中加载它们的值 - 另外,ExpansionTile
没有像ListTile
或InkWell
那样的onTap
。 - Kajetan JaukonExpansionChanged
。 - pskinkonExpansionChanged
是正确的吗? - Kajetan Jauk