mod: reply save layout
This commit is contained in:
@ -1,6 +1,5 @@
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:appscheme/appscheme.dart';
|
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@ -46,7 +45,7 @@ class ReplyItem extends StatelessWidget {
|
|||||||
final bool? showReplyRow;
|
final bool? showReplyRow;
|
||||||
final Function? replyReply;
|
final Function? replyReply;
|
||||||
final ReplyType? replyType;
|
final ReplyType? replyType;
|
||||||
final bool? replySave;
|
final bool replySave;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -56,7 +55,7 @@ class ReplyItem extends StatelessWidget {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
// 点击整个评论区 评论详情/回复
|
// 点击整个评论区 评论详情/回复
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (replySave!) {
|
if (replySave) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
feedBack();
|
feedBack();
|
||||||
@ -65,7 +64,7 @@ class ReplyItem extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () {
|
onLongPress: () {
|
||||||
if (replySave!) {
|
if (replySave) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
feedBack();
|
feedBack();
|
||||||
@ -238,14 +237,17 @@ class ReplyItem extends StatelessWidget {
|
|||||||
// title
|
// title
|
||||||
Container(
|
Container(
|
||||||
margin: const EdgeInsets.only(top: 10, left: 45, right: 6, bottom: 4),
|
margin: const EdgeInsets.only(top: 10, left: 45, right: 6, bottom: 4),
|
||||||
child: LayoutBuilder(
|
child: !replySave
|
||||||
builder: (BuildContext context, BoxConstraints boxConstraints) {
|
? LayoutBuilder(builder:
|
||||||
|
(BuildContext context, BoxConstraints boxConstraints) {
|
||||||
String text = replyItem?.content?.message ?? '';
|
String text = replyItem?.content?.message ?? '';
|
||||||
bool didExceedMaxLines = false;
|
bool didExceedMaxLines = false;
|
||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
TextPainter? textPainter;
|
TextPainter? textPainter;
|
||||||
final int maxLines =
|
final int maxLines =
|
||||||
replyItem!.content!.isText! && replyLevel == '1' ? 6 : 999;
|
replyItem!.content!.isText! && replyLevel == '1'
|
||||||
|
? 6
|
||||||
|
: 999;
|
||||||
try {
|
try {
|
||||||
textPainter = TextPainter(
|
textPainter = TextPainter(
|
||||||
text: TextSpan(text: text),
|
text: TextSpan(text: text),
|
||||||
@ -258,6 +260,33 @@ class ReplyItem extends StatelessWidget {
|
|||||||
debugPrint('Error while measuring text: $e');
|
debugPrint('Error while measuring text: $e');
|
||||||
didExceedMaxLines = false;
|
didExceedMaxLines = false;
|
||||||
}
|
}
|
||||||
|
return replyContent(context, didExceedMaxLines, textPainter);
|
||||||
|
})
|
||||||
|
: replyContent(context, false, null),
|
||||||
|
),
|
||||||
|
// 操作区域
|
||||||
|
bottonAction(context, replyItem!.replyControl, replySave),
|
||||||
|
// 一楼的评论
|
||||||
|
if ((replyItem!.replyControl!.isShow! ||
|
||||||
|
replyItem!.replies!.isNotEmpty) &&
|
||||||
|
showReplyRow!) ...[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 5, bottom: 12),
|
||||||
|
child: ReplyItemRow(
|
||||||
|
replies: replyItem!.replies,
|
||||||
|
replyControl: replyItem!.replyControl,
|
||||||
|
// f_rpid: replyItem!.rpid,
|
||||||
|
replyItem: replyItem,
|
||||||
|
replyReply: replyReply,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget replyContent(
|
||||||
|
BuildContext context, bool? didExceedMaxLines, TextPainter? textPainter) {
|
||||||
return Text.rich(
|
return Text.rich(
|
||||||
style: const TextStyle(height: 1.75),
|
style: const TextStyle(height: 1.75),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -278,33 +307,12 @@ class ReplyItem extends StatelessWidget {
|
|||||||
replyItem!,
|
replyItem!,
|
||||||
replyReply,
|
replyReply,
|
||||||
null,
|
null,
|
||||||
didExceedMaxLines,
|
didExceedMaxLines ?? false,
|
||||||
textPainter,
|
textPainter,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}),
|
|
||||||
),
|
|
||||||
// 操作区域
|
|
||||||
bottonAction(context, replyItem!.replyControl, replySave),
|
|
||||||
// 一楼的评论
|
|
||||||
if ((replyItem!.replyControl!.isShow! ||
|
|
||||||
replyItem!.replies!.isNotEmpty) &&
|
|
||||||
showReplyRow!) ...[
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 5, bottom: 12),
|
|
||||||
child: ReplyItemRow(
|
|
||||||
replies: replyItem!.replies,
|
|
||||||
replyControl: replyItem!.replyControl,
|
|
||||||
// f_rpid: replyItem!.rpid,
|
|
||||||
replyItem: replyItem,
|
|
||||||
replyReply: replyReply,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 感谢、回复、复制
|
// 感谢、回复、复制
|
||||||
|
|||||||
Reference in New Issue
Block a user