首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动到RichText中的TextSpan

滚动到RichText中的TextSpan
EN

Stack Overflow用户
提问于 2020-07-16 15:46:22
回答 1查看 394关注 0票数 2

问题是我在一个可滚动的小部件(SingleChildScrollView或ListView)中有一个RichText,我需要滚动到RichText中的一个特定的Widget。此外,我不能使用ScrollablePositionedList,因为文本应该写在最后一行的末尾,如果没有空格继续,文本应该转到下一行,所以我必须使用RichText。类似于示例代码:

代码语言:javascript
复制
ListView(
  children:[
    RichText(
      children: AListOfTextSpansThatICreateWithIndexes(),
    ),  
  ],
),

我想要显示的示例文本:

代码语言:javascript
复制
This is TextSpan1 and it is a bit 
long. This is TextSpan2 and its ok.

类似于Scrollable position of a TextSpan within a RichText

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 12:55:20

有一种方法可以使用Scrollable.ensureVisible方法确保键在屏幕上可见。(致谢给删除评论的人)

您应该首先为您的列表生成密钥:

代码语言:javascript
复制
var keys = List.generate(LENGTH, (i) => GlobalKey());

然后使用每个TextSpan后面的键:

代码语言:javascript
复制
Text.rich(
  TextSpan(
    children: Iterable.generate(LENGTH, (i) => i)
        .expand((i) => [
              WidgetSpan(
                child: SizedBox.fromSize(
                  size: Size.zero,
                  key: keys[i],
                ),
              ),
              TextSpan(
                text: 'this is text number $i',
              ),
            ])
        .toList(),
  ),
),

最后,调用此函数(可以访问上下文)滚动到所需的键:

代码语言:javascript
复制
Scrollable.ensureVisible(
   keys[i].currentContext,
   alignment: 0.2,
   duration: Duration(milliseconds: 500),
),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62929904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档