Flutter仿朋友圈多行文字展开收起

Flutter实现类似朋友圈文字显示控件功能:1.文字较少时,直接显示原文本。2.文字超过指定的最大行数时,默认只显示这几行文本,后面...结尾,并且在文本下方有一个“全文”展开按钮;点击“全文”按钮后文本全部显示完整,按钮变成“收起”;点击“收起”按后又恢复成只显示部分行数内容。

 

测试页面效果图如下:

  

 

实现原理:

使用LayoutBuilder控件,实现控件延迟加载。先用TextPainter判断文本内容是否超过指定的行数(例如3行),如果未超过,直接以普通的Text控件显示;如果超过,则显示一个Column控件,其内容分别为Text文本控件和展开/收起按钮控件,并根据

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Flutter 中可以使用动画库`flutter_animation_set`来实现展开收起动画。具体步骤如下: 1. 导入依赖库:在 `pubspec.yaml` 文件中添加以下依赖库: ``` dependencies: flutter_animation_set: ^1.2.0 ``` 2. 创建动画组件:使用 `AnimationSet` 组件创建动画效果,可以设置动画的类型、方向、持续时间等参数。例如: ```dart AnimationSet( child: Container( height: 200, child: Text('Hello, World!'), ), animations: [ AnimationItem( tween: Tween<double>(begin: 0, end: 1), duration: Duration(milliseconds: 500), delay: Duration(milliseconds: 0), curve: Curves.easeInOut, builder: (context, child, value) => Opacity( opacity: value, child: Transform.translate( offset: Offset(0, 100 - 100 * value), child: child, ), ), ), ], ) ``` 以上代码实现了一个在垂直方向上从上往下展开的动画效果,持续时间为 500 毫秒,使用了 `easeInOut` 曲线。 3. 添加交互事件:使用 `GestureDetector` 组件监听用户的手势事件,触发动画效果。例如: ```dart bool _expanded = false; GestureDetector( onTap: () { setState(() { _expanded = !_expanded; }); }, child: _expanded ? AnimationSet( child: Container( height: 200, child: Text('Hello, World!'), ), // ... ) : Container( height: 50, child: Text('Hello, World!'), ), ) ``` 以上代码实现了一个点击展开收起的交互效果,根据 `_expanded` 变量的值来判断当前应该展开还是收起。当 `_expanded` 为 `true` 时,展示动画组件;否则展示一个高度为 50 的简单组件。 通过以上步骤,就可以实现一个简单的展开收起动画了。需要注意的是,动画效果的具体实现可以根据需求进行调整,例如可以使用 `Tween` 设置不同的动画属性,使用不同的曲线来调整动画速度等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值