关于 ExpansionTile title文字展开方向的疑难杂症

来源:8-4 基于Animation实现带动画的展开列表组件

it文科生

2021-04-16

想基于ExpansionTile 组件再来二次封装本节课的展开折叠组件,代码如:

  
  Widget 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: [
      ],
    );
  }

其中的_isCollapse是布尔值用于控制是否展开,videoTitleStyle只涉及颜色的更改和字体大小的修改,现在遇到的问题是:

  1. 展开前
    图片描述

  2. 展开后
    图片描述

点击展开后,此时因为折叠被解开所以文字溢出被取消:
但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,
      ),
    );
  },
)


0
3
CrazyCodeBoy
回复
it文科生
那就是在ExpansionTile场景下还不支持这样的操作。
2021-04-19
共3条回复

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1723 学习 · 870 问题

查看课程