flutter - 将文本包裹在一个圆圈内 (Flutter)

是否可以在 Flutter 中将文本包裹在一个圆圈内?这是一个失败的例子。理想情况下,文本将适合圆圈并仅在末尾溢出。

ClipOval(
  child: SizedBox.expand(
    child: Text(
      "Round and round the rugged rocks, the rascally rascals ran. Round and round the rugged rocks, the rascally rascals ran. Round and round the rugged rocks, the rascally rascals ran. Round and round the rugged rocks, the rascally rascals ran. ",
      softWrap: true,
      overflow: TextOverflow.fade,
    ),
  ),
),

最佳答案

截至目前(2019 年 7 月),Flutter 不直接支持以非矩形形状布局文本。

使用现有的 API,应该可以通过执行以下步骤来实现类似的自定义效果:

  • 创建一列。
  • 在第 1 行布局单行文本,宽度为圆形
  • 获取最后一个布局字符的字符索引(使用 getBoxesForRange 和 getPositionForOffset)
  • 在索引处截断要布局的文本的前面以获得剩余的文本。
  • 将剩余的文本布局为单行文本,宽度为第2行。第2行的y位置可以通过增加单行1的高度来获得。
  • 重复直到没有更多的文字或圆圈被填充。将列中的所有文本居中放置。

这应该可以让你接近一些东西。实现将必须处理每个 y 位置的圆宽度的所有计算,以及手动定位每行文本。

https://stackoverflow.com/questions/56974526/

相关文章:

dart - ScrollController 如何检测滚动开始、停止和滚动?

flutter - 如何使 Bottom Sheet 格的高度跟随 JSON 的项目数量

ios - 将今天的扩展添加到 flutter 应用程序的问题

charts - 如何在 flutter 中制作动态图表?

intellij-idea - 如何启用 Flutter/Dart 语言实验?

authentication - 如何在 Flutter 应用中集成 Azure AD SSO

flutter - 通过 Firebase 使用 Google 登录时, 'ApiExpceptio

flutter - 在 Flutter 中监听设备方向变化

dart - 使用键和值从 map 创建小部件列表

dart - 如何在 Flutter/Dart 中将参数从命令行传递到 main?