mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-21 09:37:02 +08:00
@@ -78,7 +78,10 @@ class RenderParagraph extends RenderBox
|
||||
SelectionRegistrar? registrar,
|
||||
required Color primary,
|
||||
}) : assert(text.debugAssertIsValid()),
|
||||
assert(maxLines == null || maxLines > 0),
|
||||
assert(maxLines == null ||
|
||||
(maxLines > 0 &&
|
||||
overflow != TextOverflow.ellipsis &&
|
||||
overflow != TextOverflow.fade)),
|
||||
assert(
|
||||
identical(textScaler, TextScaler.noScaling) || textScaleFactor == 1.0,
|
||||
'textScaleFactor is deprecated and cannot be specified when textScaler is specified.',
|
||||
@@ -673,6 +676,8 @@ class RenderParagraph extends RenderBox
|
||||
);
|
||||
TextPainter? _morePainter;
|
||||
|
||||
bool didOverflowHeight = false;
|
||||
|
||||
@override
|
||||
void performLayout() {
|
||||
_lastSelectableFragments?.forEach(
|
||||
@@ -690,7 +695,7 @@ class RenderParagraph extends RenderBox
|
||||
final Size textSize = _textPainter.size;
|
||||
size = constraints.constrain(textSize);
|
||||
|
||||
final bool didOverflowHeight =
|
||||
didOverflowHeight =
|
||||
size.height < textSize.height || _textPainter.didExceedMaxLines;
|
||||
|
||||
if (didOverflowHeight) {
|
||||
@@ -700,7 +705,10 @@ class RenderParagraph extends RenderBox
|
||||
textScaler: textScaler,
|
||||
locale: locale,
|
||||
)..layout(maxWidth: constraints.maxWidth);
|
||||
size = Size(size.width, size.height + _morePainter!.height);
|
||||
size = Size(
|
||||
size.width,
|
||||
constraints.constrainHeight(size.height + _morePainter!.height),
|
||||
);
|
||||
}
|
||||
|
||||
final bool didOverflowWidth = size.width < textSize.width;
|
||||
@@ -764,10 +772,6 @@ class RenderParagraph extends RenderBox
|
||||
|
||||
@override
|
||||
void paint(PaintingContext context, Offset offset) {
|
||||
if (_needsClipping) {
|
||||
_morePainter?.paint(
|
||||
context.canvas, offset + Offset(0, _textPainter.height));
|
||||
}
|
||||
// Text alignment only triggers repaint so it's possible the text layout has
|
||||
// been invalidated but performLayout wasn't called at this point. Make sure
|
||||
// the TextPainter has a valid layout.
|
||||
@@ -812,6 +816,13 @@ class RenderParagraph extends RenderBox
|
||||
}
|
||||
context.canvas.restore();
|
||||
}
|
||||
|
||||
if (didOverflowHeight) {
|
||||
_morePainter?.paint(
|
||||
context.canvas,
|
||||
offset + Offset(0, _textPainter.height),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the offset at which to paint the caret.
|
||||
|
||||
@@ -283,12 +283,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
),
|
||||
const TextSpan(text: ' '),
|
||||
],
|
||||
buildContent(
|
||||
context,
|
||||
theme,
|
||||
replyItem,
|
||||
null,
|
||||
),
|
||||
buildContent(context, theme, replyItem),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -519,12 +514,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
? ''
|
||||
: ' ',
|
||||
),
|
||||
buildContent(
|
||||
context,
|
||||
theme,
|
||||
childReply,
|
||||
replyItem,
|
||||
),
|
||||
buildContent(context, theme, childReply),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -575,11 +565,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
BuildContext context,
|
||||
ThemeData theme,
|
||||
ReplyInfo replyItem,
|
||||
ReplyInfo? fReplyItem,
|
||||
) {
|
||||
// replyItem 当前回复内容
|
||||
// replyReply 查看二楼回复(回复详情)回调
|
||||
// fReplyItem 父级回复内容,用作二楼回复(回复详情)展示
|
||||
final Content content = replyItem.content;
|
||||
final List<InlineSpan> spanChildren = <InlineSpan>[];
|
||||
|
||||
@@ -625,7 +611,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
String matchStr = match[0]!;
|
||||
if (content.emotes.containsKey(matchStr)) {
|
||||
// 处理表情
|
||||
final int size = content.emotes[matchStr]!.size.toInt();
|
||||
final size = content.emotes[matchStr]!.size.toInt() * 20.0;
|
||||
spanChildren.add(
|
||||
WidgetSpan(
|
||||
child: NetworkImgLayer(
|
||||
@@ -633,8 +619,8 @@ class ReplyItemGrpc extends StatelessWidget {
|
||||
? content.emotes[matchStr]?.gifUrl
|
||||
: content.emotes[matchStr]?.url,
|
||||
type: ImageType.emote,
|
||||
width: size * 20,
|
||||
height: size * 20,
|
||||
width: size,
|
||||
height: size,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user