gpt4 book ai didi

flutter - 如何在 Flutter 中一次只扩展一个 ExpansionTile

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

我建了一个 ListviewExpansionTile .但是现在我想要,如果我点击 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/

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