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(