Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-12-25 13:43:20 +08:00
parent 161bf2eedb
commit 20a36e8f9a
97 changed files with 596 additions and 436 deletions

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
show ReplyInfo, DetailListReply, Mode;
import 'package:PiliPlus/grpc/reply.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/common/publish/publish_route.dart';
import 'package:PiliPlus/pages/common/reply_controller.dart';
import 'package:PiliPlus/pages/video/reply_new/view.dart';
import 'package:PiliPlus/utils/id_utils.dart';
@@ -12,7 +13,6 @@ import 'package:fixnum/fixnum.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:get/get.dart';
import 'package:get/get_navigation/src/dialog/dialog_route.dart';
import 'package:super_sliver_list/super_sliver_list.dart';
class VideoReplyReplyController extends ReplyController
@@ -175,7 +175,7 @@ class VideoReplyReplyController extends ReplyController
Navigator.of(context)
.push(
GetDialogRoute(
PublishRoute(
pageBuilder: (buildContext, animation, secondaryAnimation) {
return ReplyPage(
hint: hint,
@@ -194,18 +194,6 @@ class VideoReplyReplyController extends ReplyController
},
);
},
transitionDuration: const Duration(milliseconds: 500),
transitionBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: animation.drive(
Tween(
begin: const Offset(0.0, 1.0),
end: Offset.zero,
).chain(CurveTween(curve: Curves.linear)),
),
child: child,
);
},
),
)
.then((res) {

View File

@@ -16,7 +16,7 @@ import 'package:PiliPlus/utils/utils.dart';
import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart' hide ContextExtensionss;
import 'package:get/get.dart';
import 'package:super_sliver_list/super_sliver_list.dart';
class VideoReplyReplyPanel extends CommonSlidePage {
@@ -94,13 +94,15 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
with SingleTickerProviderStateMixin, CommonSlideMixin {
late VideoReplyReplyController _controller;
late final _tag = Utils.makeHeroTag('${widget.rpid}${widget.dialog}');
Animation<Color?>? colorAnimation;
CurvedAnimation? _curvedAnimation;
Animation<Color?>? _colorAnimation;
late final bool isDialogue = widget.dialog != null;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_colorAnimation = null;
final controller = PrimaryScrollController.of(context);
_controller
..didChangeDependencies(context)
@@ -127,6 +129,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
@override
void dispose() {
_curvedAnimation?.dispose();
Get.delete<VideoReplyReplyController>(tag: _tag);
super.dispose();
}
@@ -331,12 +334,12 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
final child = _replyItem(context, response[index], index);
if (jumpIndex == index) {
return AnimatedBuilder(
animation: colorAnimation ??=
animation: _colorAnimation ??=
ColorTween(
begin: theme.colorScheme.onInverseSurface,
end: theme.colorScheme.surface,
).animate(
CurvedAnimation(
_curvedAnimation ??= CurvedAnimation(
parent: _controller.animController,
curve: const Interval(0.8, 1.0), // 前0.8s不变, 后0.2s开始动画
),
@@ -344,7 +347,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel>
child: child,
builder: (context, child) {
return ColoredBox(
color: colorAnimation!.value!,
color: _colorAnimation!.value!,
child: child,
);
},