feat: later page: multi select

feat: fav detail page: multi select

opt: reply item

opt: load more

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-28 20:53:52 +08:00
parent 665dd8b92a
commit 12818ae415
51 changed files with 988 additions and 759 deletions

View File

@@ -3,7 +3,6 @@ import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:get/get.dart';
@@ -211,10 +210,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
(BuildContext context, index) {
double bottom = MediaQuery.of(context).padding.bottom;
if (index == loadingState.response.replies.length) {
EasyThrottle.throttle(
'replylist', const Duration(milliseconds: 200), () {
_videoReplyController.onLoadMore();
});
_videoReplyController.onLoadMore();
return Container(
alignment: Alignment.center,
padding: EdgeInsets.only(bottom: bottom),

View File

@@ -770,20 +770,6 @@ class ReplyItemGrpc extends StatelessWidget {
: null,
),
);
} else if (matchStr.startsWith('https://b23.tv/')) {
spanChildren.add(
TextSpan(
text: ' $matchStr ',
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
),
recognizer: TapGestureRecognizer()
..onTap = () => Get.toNamed(
'/webviewnew',
parameters: {'url': matchStr},
),
),
);
} else {
String appUrlSchema = '';
final bool enableWordRe = GStorage.setting
@@ -921,6 +907,20 @@ class ReplyItemGrpc extends StatelessWidget {
},
),
);
} else if (matchStr.startsWith('https://b23.tv/')) {
spanChildren.add(
TextSpan(
text: ' $matchStr ',
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
),
recognizer: TapGestureRecognizer()
..onTap = () => Get.toNamed(
'/webviewnew',
parameters: {'url': matchStr},
),
),
);
} else {
addPlainTextSpan(matchStr);
}

View File

@@ -5,7 +5,6 @@ import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'
import 'package:PiliPalaX/pages/video/detail/reply_new/reply_page.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:PiliPalaX/utils/utils.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/common/skeleton/video_reply.dart';
@@ -313,10 +312,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
),
Success() => () {
if (index == loadingState.response.length) {
EasyThrottle.throttle(
'replylist', const Duration(milliseconds: 200), () {
_videoReplyReplyController.onLoadMore();
});
_videoReplyReplyController.onLoadMore();
return Container(
alignment: Alignment.center,
padding: EdgeInsets.only(

View File

@@ -16,6 +16,7 @@ import 'package:PiliPalaX/pages/video/detail/widgets/ai_detail.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:PiliPalaX/utils/id_utils.dart';
import 'package:auto_orientation/auto_orientation.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:floating/floating.dart';
import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -1312,18 +1313,20 @@ class _VideoDetailPageState extends State<VideoDetailPage>
// 展示二级回复
void replyReply(replyItem, id, isTop) {
videoDetailController.childKey.currentState?.showBottomSheet(
(context) => VideoReplyReplyPanel(
id: id,
// rcount: replyItem.rcount,
oid: replyItem.oid.toInt(),
rpid: replyItem.id.toInt(),
firstFloor: replyItem,
replyType: ReplyType.video,
source: 'videoDetail',
isTop: isTop,
),
);
EasyThrottle.throttle('replyReply', const Duration(milliseconds: 500), () {
videoDetailController.childKey.currentState?.showBottomSheet(
(context) => VideoReplyReplyPanel(
id: id,
// rcount: replyItem.rcount,
oid: replyItem.oid.toInt(),
rpid: replyItem.id.toInt(),
firstFloor: replyItem,
replyType: ReplyType.video,
source: 'videoDetail',
isTop: isTop,
),
);
});
}
// ai总结