我以此作为扩展和折叠扩展瓦片的参考------- Flutter - 选择项目后折叠扩展瓦片
我想要的是,如果我打开一个扩展图块并且用户单击另一个扩展图块,则其他打开的扩展图块应该关闭。
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
void main() {
runApp(new ExpansionTileSample());
}
class ExpansionTileSample extends StatefulWidget {
@override
ExpansionTileSampleState createState() => new ExpansionTileSampleState();
}
class ExpansionTileSampleState extends State<ExpansionTileSample> {
final GlobalKey<AppExpansionTileState> expansionTile = new GlobalKey();
String foos = 'One';
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: const Text('ExpansionTile'),
),
body: GestureDetector(
onTap: () {
setState(() {
// this.foos = 'One';
expansionTile.currentState.collapse();
});
},
child: Column(
children: <Widget>[ …Run Code Online (Sandbox Code Playgroud) 我ExpansionTile选择一个项目后,我试图崩溃,但它没有关闭打开的列表.
我试图使用该onExpansionChanged属性,但我没有成功
你怎么能解决这个问题?
插入一个演示ExpansionTile在选择项目后不会崩溃的gif ,下面也是使用的代码.
import 'package:flutter/material.dart';
void main() {
runApp(new ExpansionTileSample());
}
class ExpansionTileSample extends StatefulWidget {
@override
ExpansionTileSampleState createState() => new ExpansionTileSampleState();
}
class ExpansionTileSampleState extends State<ExpansionTileSample> {
String foos = 'One';
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: const Text('ExpansionTile'),
),
body: new ExpansionTile(
title: new Text(this.foos),
backgroundColor: Theme.of(context).accentColor.withOpacity(0.025),
children: <Widget>[
new ListTile(
title: const Text('One'),
onTap: () {
setState(() {
this.foos = …Run Code Online (Sandbox Code Playgroud) 我已经建立了一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。