作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我建了一个 Listview
与 ExpansionTile
.但是现在我想要,如果我点击 ExpansionTile
那么只有ExpansionTile
应开等 展开ExpansionTile
应该关闭。
请帮助我如何实现这一目标?
这是我的代码 ExpansionTile
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Short Product"),
),
body: ListView.builder(
itemCount: Category_List.length,
itemBuilder: (context, i) {
return ExpansionTile(
title: Text(Category_List[i].cat_name),
children:_Product_ExpandAble_List_Builder(Category_List[i].cat_id)
);
},
)
);
}
_Product_ExpandAble_List_Builder(int cat_id) {
List<Widget> columnContent = [];
Product_List.forEach((product) => {
columnContent.add(
ListTile(
title: ExpansionTile(
title: Text(product.prod_name),
),
trailing: Text("${product.total_Qty} (Kg)"),
),
),
});
return columnContent;
}
}
最佳答案
您可以以编程方式更改扩展磁贴应打开或关闭。
我做了类似于你的代码。
int selected; //attention
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Short Product"),
),
body: ListView.builder(
key: Key('builder ${selected.toString()}'), //attention
itemCount: 10,
itemBuilder: (context, i) {
return ExpansionTile(
key: Key(i.toString()), //attention
initiallyExpanded: i == selected, //attention
title: Text(i.toString()),
children: _Product_ExpandAble_List_Builder(i),
onExpansionChanged: ((newState) {
if (newState)
setState(() {
selected = i;
});
else
setState(() {
selected = -1;
});
}));
},
),
);
}
_Product_ExpandAble_List_Builder(int cat_id) {
List<Widget> columnContent = [];
[1, 2, 4, 5].forEach((product) => {
columnContent.add(
ListTile(
title: ExpansionTile(
title: Text(product.toString()),
),
trailing: Text("$product (Kg)"),
),
),
});
return columnContent;
}
关于flutter - 如何在 Flutter 中一次只扩展一个 ExpansionTile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61790829/
我是一名优秀的程序员,十分优秀!