【发布时间】:2020-09-03 18:38:58
【问题描述】:
我正在开发一款 Flutter 应用,用于向用户展示故事和文章。
目前,我正在 RichText 小部件中构建故事,以向文本的各种子字符串添加特殊样式和交互性,并且正在输入用于构建我正在填充 RichText 的 TextSpan 或 WidgetSpan 列表的数据来自一个自定义类的列表,该类包含实际的子字符串以及用于设置样式的信息。
为简单起见,假设此 List 的每个子项是:
CustomSpanClass(string: "substring that may include ,!'\" punctuation", weight: FontWeight.bold, ...etc)
目前,整个 RichText 都保存在一个可滚动的容器中,因此用户可以滚动浏览同一页面上的故事。我想给用户提供滑动阅读体验的选项,这就是我最大的障碍:输入的数据只是一个大的子字符串列表,所以我不知道什么时候文本会溢出屏幕。
有谁知道如何捕获哪个 TextSpan/WidgetSpan 会首先溢出由屏幕宽度和高度限制的容器的约束?我做了很多阅读,并认为也许我需要利用/访问 RenderObject,但我真的很茫然。
这有点过于简单了,但换句话说,如果我有一个 RichText:
Text.rich(
children: [
CustomSpan(string: "Flutter is pretty awesome,"),
CustomSpan(string: "and I love that it uses"),
CustomSpan(string: "widgets", weight: FontWeight.bold, color: Colors.blue),
CustomSpan(string: "and has hot reload capability."),
CustomSpan(string: "This span won't fit on the same screen for an iPhone 8 plus",),
CustomSpan(string: "And this span won't fully fit on the same screen for an iPhone 11 Pro."),
],
)
有谁知道我如何获取溢出页面的 Text.rich() 跨度的第一个子元素的索引,然后从那里开始构建第二个屏幕?
【问题讨论】:
标签: flutter dart pagination richtext