From 9a76dcd23258198045b53b98c5082371c8ba46df Mon Sep 17 00:00:00 2001 From: "sky.min" Date: Mon, 29 Dec 2025 08:57:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E9=B8=BF=E8=92=99=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E7=9B=91=E6=8E=A7/=E8=A7=86=E9=A2=91=E5=AF=B9?= =?UTF-8?q?=E8=AE=B2=E5=8A=A8=E7=94=BB=E8=BD=AC=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockDetail/lockDetail_page.dart | 2 +- .../native/talk_view_native_decode_logic.dart | 12 +------ .../native/talk_view_native_decode_page.dart | 31 ++++++------------- 3 files changed, 11 insertions(+), 34 deletions(-) diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 4ea43070..4ffb5fe9 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -50,6 +50,7 @@ class _LockDetailPageState extends State with TickerProviderStat @override void initState() { + super.initState(); print("LockDetailPage initState"); state.animationController = AnimationController(duration: const Duration(seconds: 1), vsync: this); state.animationController?.repeat(); @@ -63,7 +64,6 @@ class _LockDetailPageState extends State with TickerProviderStat state.animationController?.forward(); } }); - super.initState(); state.pageController.addListener(() { state.currentPage.value = state.pageController.page!.round(); diff --git a/lib/talk/starChart/views/native/talk_view_native_decode_logic.dart b/lib/talk/starChart/views/native/talk_view_native_decode_logic.dart index 32a52790..f98f3b53 100644 --- a/lib/talk/starChart/views/native/talk_view_native_decode_logic.dart +++ b/lib/talk/starChart/views/native/talk_view_native_decode_logic.dart @@ -239,14 +239,7 @@ class TalkViewNativeDecodeLogic extends BaseGetXController { // 异步设置帧渲染监听器 VideoDecodePlugin.setOnFrameRenderedListener((textureId) { AppLog.log('已经开始渲染======='); - // 只有真正渲染出首帧时才关闭loading - Future.microtask(() { - state.isLoading.value = false; - // 添加停止动画的代码 - if (state.animationController.isAnimating) { - state.animationController.stop(); - } - }); + Future.microtask(() => state.isLoading.value = false); }); } else { AppLog.log('视频解码器初始化失败或超时, 耗时: ${duration}ms'); @@ -588,7 +581,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController { /// 从缓冲区处理下一帧 - 优化版:简化逻辑和动态调整 Future _processNextFrameFromBuffer() async { - final stopwatch = Stopwatch()..start(); _monitorFrameProcessingPerformance(); final startTime = DateTime.now().microsecondsSinceEpoch; @@ -774,8 +766,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController { AppLog.log('帧处理耗时过长: ${durationMs.toStringAsFixed(2)} ms, 缓冲区长度: ${state.h264FrameBuffer.length}'); } } - stopwatch.stop(); - print('执行耗时: ${stopwatch.elapsedMilliseconds} 毫秒'); } diff --git a/lib/talk/starChart/views/native/talk_view_native_decode_page.dart b/lib/talk/starChart/views/native/talk_view_native_decode_page.dart index c3305d19..6c267e9d 100644 --- a/lib/talk/starChart/views/native/talk_view_native_decode_page.dart +++ b/lib/talk/starChart/views/native/talk_view_native_decode_page.dart @@ -39,32 +39,23 @@ class _TalkViewNativeDecodePageState extends State wit final TalkViewNativeDecodeState state = Get.find().state; final startChartManage = StartChartManage(); - late AnimationController _animationController; // 改为本地变量 - @override void initState() { super.initState(); - - _animationController = AnimationController( // 使用本地变量 - vsync: this, + state.animationController = AnimationController( + vsync: this, // 确保使用的TickerProvider是当前Widget duration: const Duration(seconds: 1), ); - state.animationController = _animationController; // 同步到状态 - - _animationController.repeat(); - - SchedulerBinding.instance.addPostFrameCallback((_) { - _animationController.duration = const Duration(milliseconds: 500); - }); - - _animationController.addStatusListener((AnimationStatus status) { + state.animationController.repeat(); + //动画开始、结束、向前移动或向后移动时会调用StatusListener + state.animationController.addStatusListener((AnimationStatus status) { if (status == AnimationStatus.completed) { - _animationController.reset(); - _animationController.forward(); + state.animationController.reset(); + state.animationController.forward(); } else if (status == AnimationStatus.dismissed) { - _animationController.reset(); - _animationController.forward(); + state.animationController.reset(); + state.animationController.forward(); } }); } @@ -521,10 +512,6 @@ class _TalkViewNativeDecodePageState extends State wit @override void dispose() { CallTalk().finishAVData(); - - // 只处理本地的 animation controller - _animationController.dispose(); - super.dispose(); } }