Closed blueloveTH closed 1 year ago
等官方重构之后,我会重新也重构新的,暂时不做处理了。
等官方重构之后,我会重新也重构新的,暂时不做处理了。
啊....那要啥时候更新呀> < 现在有什么workaround吗
官方的会吗
官方的会吗
官方是指啥,我的项目用了ExtendedTextField和SpecialSpanBuilder,有办法兼容这些吗。
是在做一个类似论坛的显示,不可避免有长文本,所以挺着急的。错位之后,图片的显示也都不正常。
官方就是flutter 官方的呢
@zmtzawqlp 官方的不会,我的一款 App 元思笔记之前为了支持 Markdown 的渲染后拷贝切换到了 ExtendedText 后也遇到了,文本越长渲染偏差越明显。
请问下这个问题有计划解决吗?如果有的话不知道有没有大概的时间表。
你看看最新的版本也有这个问题吗。。这个问题不好调查。。整个绘制其实是 textpainter做的
亲测把ExtendedRichText换成官方的Text.rich没有这个问题。
// extended_text.dart
// ...
Widget result;
if (selectionEnabled) {
/*
result = ExtendedTextSelection(
textAlign: textAlign ?? defaultTextStyle.textAlign ?? TextAlign.start,
textDirection: textDirection ??
Directionality.of(
context), // RichText uses Directionality.of to obtain a default if this is null.
locale:
locale, // RichText uses Localizations.localeOf to obtain a default if this is null
softWrap: softWrap ?? defaultTextStyle.softWrap,
overflow: overflow ?? defaultTextStyle.overflow,
textScaleFactor:
textScaleFactor ?? MediaQuery.textScaleFactorOf(context),
maxLines: maxLines ?? defaultTextStyle.maxLines,
text: innerTextSpan,
selectionColor: selectionColor,
dragStartBehavior: dragStartBehavior,
onTap: onTap,
data: (joinZeroWidthSpace ? data?.joinChar() : data) ??
textSpanToActualText(innerTextSpan),
textSelectionControls: selectionControls,
textHeightBehavior:
textHeightBehavior ?? defaultTextStyle.textHeightBehavior,
textWidthBasis: textWidthBasis ?? defaultTextStyle.textWidthBasis,
overFlowWidget: overflowWidget,
strutStyle: strutStyle,
);
*/
} else {
/*
result = ExtendedRichText(
textAlign: textAlign ?? defaultTextStyle.textAlign ?? TextAlign.start,
textDirection: textDirection ??
Directionality.of(
context), // RichText uses Directionality.of to obtain a default if this is null.
locale:
locale, // RichText uses Localizations.localeOf to obtain a default if this is null
softWrap: softWrap ?? defaultTextStyle.softWrap,
overflow: overflow ?? defaultTextStyle.overflow,
textScaleFactor:
textScaleFactor ?? MediaQuery.textScaleFactorOf(context),
maxLines: maxLines ?? defaultTextStyle.maxLines,
text: innerTextSpan,
textHeightBehavior:
textHeightBehavior ?? defaultTextStyle.textHeightBehavior,
textWidthBasis: textWidthBasis ?? defaultTextStyle.textWidthBasis,
overflowWidget: overflowWidget,
hasFocus: false,
strutStyle: strutStyle,
);
if (overflowWidget != null) {
result = RepaintBoundary(
child: result,
);
}
*/
}
/*
if (semanticsLabel != null) {
result = Semantics(
textDirection: textDirection,
label: semanticsLabel,
child: ExcludeSemantics(
child: result,
),
);
}*/
result = Text.rich(
innerTextSpan,
style: style,
strutStyle: strutStyle,
textAlign: textAlign ?? defaultTextStyle.textAlign ?? TextAlign.start,
textDirection: textDirection ??
Directionality.of(
context), // RichText uses Directionality.of to obtain a default if this is null.
locale: locale, // RichText uses Localizations.localeOf to obtain a default if this is null
softWrap: softWrap ?? defaultTextStyle.softWrap,
overflow: overflow ?? defaultTextStyle.overflow,
textScaleFactor: textScaleFactor ?? MediaQuery.textScaleFactorOf(context),
maxLines: maxLines ?? defaultTextStyle.maxLines,
textWidthBasis: textWidthBasis ?? defaultTextStyle.textWidthBasis,
textHeightBehavior: textHeightBehavior ?? defaultTextStyle.textHeightBehavior,
);
return result;
}
我试了下。当内容很长的时候。官方也会出现这个问题。
please check it on lastest version, reopen if need.
下图激活selection,可以看到,选中的位置和文本真实位置有一点错位,随着文本行数不断增加,这种错位逐渐累计,变得越来越明显。
该问题的复现方法:
版本:Flutter 2.2.3 平台:Android(Windows似乎没有这个问题)
此外,ExtendedTextField也没有这个问题