Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何动态修改某一行的文本样式,或某一行中某个范围内文本的样式 #23

Open
onism0106 opened this issue May 14, 2024 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@onism0106
Copy link

No description provided.

@onism0106 onism0106 added the enhancement New feature or request label May 14, 2024
@MegatronKing
Copy link
Contributor

可以通过CodeLineSpanBuilder构建特别的样式,请参考CodeLineEditingController的构造函数。

@onism0106
Copy link
Author

可以通过CodeLineSpanBuilder构建特别的样式,请参考CodeLineEditingController的构造函数。

这种方式只有要构建组件时生效,想着在界面构建完成后,连接LSP,拿到LSP分析的结果,比如某一行错误,某一行警告,然后通过controller去刷新某一行的样式,似乎没有找到这样的方法

@MegatronKing
Copy link
Contributor

  1. Editor的数据结构不包含额外的信息,例如错误、警告这些,这些需要你自己维护一个数据结构,在SpanBuilder里面使用。
  2. 不存在刷新某一行这样的设计,整个Editor就是是一个RenderObject,只能整体刷新(可以使用controller的forceRepaint函数)。因为当你某一行的样式发生变化时,文字的渲染尺寸很可能发生变化,会引起后续文字渲染位置的变更,所以整体内容重新刷新是一个比较容易的处理方式。

@onism0106
Copy link
Author

  1. Editor的数据结构不包含额外的信息,例如错误、警告这些,这些需要你自己维护一个数据结构,在SpanBuilder里面使用。
  2. 不存在刷新某一行这样的设计,整个Editor就是是一个RenderObject,只能整体刷新(可以使用controller的forceRepaint函数)。因为当你某一行的样式发生变化时,文字的渲染尺寸很可能发生变化,会引起后续文字渲染位置的变更,所以整体内容重新刷新是一个比较容易的处理方式。
  1. Editor的数据结构不包含额外的信息,例如错误、警告这些,这些需要你自己维护一个数据结构,在SpanBuilder里面使用。
  2. 不存在刷新某一行这样的设计,整个Editor就是是一个RenderObject,只能整体刷新(可以使用controller的forceRepaint函数)。因为当你某一行的样式发生变化时,文字的渲染尺寸很可能发生变化,会引起后续文字渲染位置的变更,所以整体内容重新刷新是一个比较容易的处理方式。

好的,感谢,目前看是可以的。
另外还有个问题,拿到的textSpan已经是高亮好的结果了,如何修改这个TextSpan的样式呢?
例如我需要将某一行的字体变成灰色,或者我需要在某一行的某个位置开始到某个位置结束划线,但是我这样写似乎不可以:

`
return TextSpan(
// text: textSpan.text,
style: style.copyWith(
decoration: TextDecoration.underline,
decorationThickness: 2,
decorationStyle: TextDecorationStyle.wavy,
decorationColor: color,

        ),
        children: textSpan.children,
      );

`

@MegatronKing
Copy link
Contributor

@onism0106 我不确定是哪里的问题,但是理论上可以加上划线这些样式。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants