From 90e896652856c4bcb117a41dfeb50a17bdf5862e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E9=94=8B?= <2535831261@qq.com> Date: Wed, 1 Jul 2026 11:19:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=80=9A=E9=81=93=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=EF=BC=8C=E5=9C=A8Android=E5=92=8CiOS=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E4=B8=AD=E4=BD=BF=E7=94=A8=E7=BB=9F=E4=B8=80=E7=9A=84?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4=E2=80=98app.record=5Ftool?= =?UTF-8?q?=E2=80=99=E3=80=82=E7=9B=B8=E5=BA=94=E5=9C=B0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E5=B8=B8=E9=87=8F=E5=92=8C=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E9=80=9A=E9=81=93=E3=80=82=E5=A2=9E=E5=BC=BA=E5=9C=A8?= =?UTF-8?q?=E5=BD=95=E5=88=B6HUD=E4=B8=AD=E7=9A=84=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E6=98=BE=E7=A4=BA=E6=A0=BC=E5=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/kotlin/com/run/sportsx/AppConstants.kt | 12 ++++++------ ios/Runner/PlatformInfoPlugin.swift | 2 +- ios/Runner/RecordingPlugin.swift | 6 +++--- lib/core/platform/app_platform_info.dart | 2 +- .../recording/platform/recording_channel_names.dart | 6 +++--- .../recording/widgets/widget_recording_hud.dart | 11 +++++++---- test/features/recording/recording_platform_test.dart | 8 ++++++++ 7 files changed, 29 insertions(+), 18 deletions(-) diff --git a/android/app/src/main/kotlin/com/run/sportsx/AppConstants.kt b/android/app/src/main/kotlin/com/run/sportsx/AppConstants.kt index 385b77d..0971a45 100644 --- a/android/app/src/main/kotlin/com/run/sportsx/AppConstants.kt +++ b/android/app/src/main/kotlin/com/run/sportsx/AppConstants.kt @@ -1,10 +1,10 @@ package com.run.sportsx object AppConstants { - const val PACKAGE_NAME = "com.run.sportsx" - const val PLATFORM_INFO_CHANNEL = "$PACKAGE_NAME/platform_info" - const val RECORDING_METHOD_CHANNEL = "$PACKAGE_NAME/recording" - const val RECORDING_EVENT_CHANNEL = "$PACKAGE_NAME/recording_events" - const val RECORDING_ACTION_START = "$PACKAGE_NAME.recording.START" - const val RECORDING_ACTION_STOP = "$PACKAGE_NAME.recording.STOP" + private const val CHANNEL_NAMESPACE = "app.record_tool" + const val PLATFORM_INFO_CHANNEL = "$CHANNEL_NAMESPACE/platform_info" + const val RECORDING_METHOD_CHANNEL = "$CHANNEL_NAMESPACE/recording" + const val RECORDING_EVENT_CHANNEL = "$CHANNEL_NAMESPACE/recording_events" + const val RECORDING_ACTION_START = "$CHANNEL_NAMESPACE.recording.START" + const val RECORDING_ACTION_STOP = "$CHANNEL_NAMESPACE.recording.STOP" } diff --git a/ios/Runner/PlatformInfoPlugin.swift b/ios/Runner/PlatformInfoPlugin.swift index 5de88dd..f219908 100644 --- a/ios/Runner/PlatformInfoPlugin.swift +++ b/ios/Runner/PlatformInfoPlugin.swift @@ -4,7 +4,7 @@ import UIKit final class PlatformInfoPlugin: NSObject, FlutterPlugin { static func register(with registrar: FlutterPluginRegistrar) { let channel = FlutterMethodChannel( - name: "com.run.sportsx/platform_info", + name: "app.record_tool/platform_info", binaryMessenger: registrar.messenger() ) let plugin = PlatformInfoPlugin() diff --git a/ios/Runner/RecordingPlugin.swift b/ios/Runner/RecordingPlugin.swift index 0fdeb25..6b8e53b 100644 --- a/ios/Runner/RecordingPlugin.swift +++ b/ios/Runner/RecordingPlugin.swift @@ -633,9 +633,9 @@ private final class RecordingCameraController: NSObject, AVCaptureFileOutputReco } private enum RecordingChannelNames { - static let packageName = "com.run.sportsx" - static let method = "\(packageName)/recording" - static let events = "\(packageName)/recording_events" + static let namespace = "app.record_tool" + static let method = "\(namespace)/recording" + static let events = "\(namespace)/recording_events" } final class RecordingPlugin: NSObject, FlutterPlugin, FlutterStreamHandler { diff --git a/lib/core/platform/app_platform_info.dart b/lib/core/platform/app_platform_info.dart index 3c7f53d..3f70f66 100644 --- a/lib/core/platform/app_platform_info.dart +++ b/lib/core/platform/app_platform_info.dart @@ -60,7 +60,7 @@ class AppPlatformInfo { AppPlatformInfo._(); static const MethodChannel _channel = MethodChannel( - 'com.run.sportsx/platform_info', + 'app.record_tool/platform_info', ); static Future packageInfo() async { diff --git a/lib/features/recording/platform/recording_channel_names.dart b/lib/features/recording/platform/recording_channel_names.dart index b97f0b7..4d07f93 100644 --- a/lib/features/recording/platform/recording_channel_names.dart +++ b/lib/features/recording/platform/recording_channel_names.dart @@ -1,5 +1,5 @@ abstract final class RecordingChannelNames { - static const packageName = 'com.run.sportsx'; - static const method = '$packageName/recording'; - static const events = '$packageName/recording_events'; + static const namespace = 'app.record_tool'; + static const method = '$namespace/recording'; + static const events = '$namespace/recording_events'; } diff --git a/lib/features/recording/widgets/widget_recording_hud.dart b/lib/features/recording/widgets/widget_recording_hud.dart index c0f52c2..ab76bc3 100644 --- a/lib/features/recording/widgets/widget_recording_hud.dart +++ b/lib/features/recording/widgets/widget_recording_hud.dart @@ -308,7 +308,7 @@ class _ZoomPresetButton extends StatelessWidget { ), ), child: Text( - '${_formatZoomRatio(displayRatio)}x', + _formatZoomRatio(displayRatio), style: TextStyle( fontSize: 13.sp, fontWeight: FontWeight.w700, @@ -320,9 +320,12 @@ class _ZoomPresetButton extends StatelessWidget { } String _formatZoomRatio(double ratio) { - if (ratio == ratio.roundToDouble()) { - return ratio.toStringAsFixed(0); + if (ratio < 1.0) { + return '广角'; } - return ratio.toStringAsFixed(1); + if (ratio == ratio.roundToDouble()) { + return '${ratio.toStringAsFixed(0)}x'; + } + return '${ratio.toStringAsFixed(1)}x'; } } diff --git a/test/features/recording/recording_platform_test.dart b/test/features/recording/recording_platform_test.dart index 54bd537..9774d92 100644 --- a/test/features/recording/recording_platform_test.dart +++ b/test/features/recording/recording_platform_test.dart @@ -1,7 +1,15 @@ import 'package:flutter_test/flutter_test.dart'; +import 'package:recording_tool/features/recording/platform/recording_channel_names.dart'; import 'package:recording_tool/features/recording/platform/recording_platform.dart'; void main() { + group('RecordingChannelNames', () { + test('uses stable bridge names without package binding', () { + expect(RecordingChannelNames.method, 'app.record_tool/recording'); + expect(RecordingChannelNames.events, 'app.record_tool/recording_events'); + }); + }); + group('RecordingPlatform support', () { test('supports Android and iOS hosts only', () { expect(