Sam*_*ani 25
尝试添加一个ExpansionTile内部 a Card,这将Card在您展开时展开ExpansionTile
Card(
child: Padding(
padding: EdgeInsets.only(
top: 36.0, left: 6.0, right: 6.0, bottom: 6.0),
child: ExpansionTile(
title: Text('Birth of Universe'),
children: <Widget>[
Text('Big Bang'),
Text('Birth of the Sun'),
Text('Earth is Born'),
],
),
),
)
Run Code Online (Sandbox Code Playgroud)
如果您不想使用,ExpansionTile那么最简单的方法之一就是遵循
class ExpandableCardContainer extends StatefulWidget {
final bool isExpanded;
final Widget collapsedChild;
final Widget expandedChild;
const ExpandableCardContainer(
{Key key, this.isExpanded, this.collapsedChild, this.expandedChild})
: super(key: key);
@override
_ExpandableCardContainerState createState() =>
_ExpandableCardContainerState();
}
class _ExpandableCardContainerState extends State<ExpandableCardContainer> {
@override
Widget build(BuildContext context) {
return new AnimatedContainer(
duration: new Duration(milliseconds: 200),
curve: Curves.easeInOut,
child: widget.isExpanded ? widget.expandedChild : widget.collapsedChild,
);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此小部件并传递折叠的子项和展开的子项并更改isExpanded单击按钮或文本时的值。
ExpandableCardContainer(
expandedChild: createExpandedColumn(context),
collapsedChild: createCollapsedColumn(context),
isExpanded: widget.model.isExpanded,
)
Run Code Online (Sandbox Code Playgroud)
现在更改isExpanded单击图标/文本的值
GestureDetector(
child: Icon(
widget.model.isExpanded
? EvaIcons.chevronDownOutline
: EvaIcons.chevronUpOutline,
color: Colors.grey,
size: 20,
),
onTap: () {
setState(() {
widget.model.isExpanded =
!widget.model.isExpanded;
});
},
),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19970 次 |
| 最近记录: |