Flutter Text自动换行,全网独一份

网上搜不到,长时间探索,得出的结论,不容易。

1、问题介绍

Flutter的Text默认不支持自动换行,如果文字过长,会溢出到屏幕之外。

例如这样的布局,此时Text换行失效:

Row->Column->Text

2、如何实现换行?

找到Text被包裹的所有Row(必须是Row),在Row内部,使用Expanded包住里面的元素(只包裹住通往Text那条线上的元素就行)

这样解决了这个问题,最终支持换行的嵌套关系:

Row->Expanded->Column->Text

  Widget build(BuildContext context) {
    return Row(
      children: [
        Expanded(
          child: Column(
            children: [Text("很长很长很长很长很长很长很长很长很长很长很长很长很长")],
          ),
        ),
      ],
    );
  }

3、课后习题(哈哈,给大家留个作业)

例如:Row->Column->Row->Column->Row->Text

问:如何让Text自动换行?

答案:


  Widget build(BuildContext context) {
    return Row(children: [
      Expanded(
          child: Column(children: [
        Row(
          children: [
            Expanded(
                child: Column(
              children: [
                Row(
                  children: [
                    Expanded(child: Text("1很长很长很长很长很长很长很长很长很长很长很长很长很长"))
                  ],
                )
              ],
            )),
          ],
        )
      ]))
    ]);
  }

4、Column里面放Text天然支持换行,无需特殊处理。

注意的是,Column里放Expaned会报错,因为没有限制Column高度,内部Expanded展开会让高度变得无穷大,因此会报错。需要指定Column高度,例如套一层SizedBox(height:100)

其实Flutter还有很多技巧(坑),后面整理一下分享出来。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值