关于 ExpansionTile title文字展开方向的疑难杂症
来源:8-4 基于Animation实现带动画的展开列表组件

it文科生
2021-04-16
想基于ExpansionTile
组件再来二次封装本节课的展开折叠组件,代码如:
build(BuildContext context) {
return ExpansionTile(
key: widget.key,
tilePadding: const EdgeInsets.all(0),
onExpansionChanged: (isExpanding) =>
setState(() => _isCollapse = !isExpanding),
initiallyExpanded: _isCollapse,
/// demo
title: Text('Test' * 40, style: videoTitleStyle, softWrap: true,
maxLines: _isCollapse ? 1 : 3,),
children: [
],
);
}
Widget
其中的_isCollapse
是布尔值用于控制是否展开,videoTitleStyle
只涉及颜色的更改和字体大小的修改,现在遇到的问题是:
-
展开前
-
展开后
点击展开后,此时因为折叠被解开所以文字溢出被取消:
但title文字的展开方向是从中间往两边展开,而不是预期的从上往下展开,而使用Align组件也没有解决这个问题…
阅读了ExpansionTile
底层的ListTile
也没有搞清楚是什么原因导致的… 百思不得其解,希望得到解答,代码如上,可以尝试复现。
写回答
1回答
-
CrazyCodeBoy
2021-04-18
给Aligns设置alignment: Alignment.topCenter了吗?
AnimatedBuilder( animation: _controller.view, child: child, builder: (BuildContext context, Widget child) { return Align( heightFactor: _heightFactor.value, //fix 从布局之上的位置开始展开 alignment: Alignment.topCenter, child: Container( //会撑满宽度后,让内容对其 alignment: Alignment.topLeft, padding: EdgeInsets.only(top: 8), child: child, ), ); }, )
032021-04-19
相似问题