diff --git a/packages/erika_flutter/ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets b/packages/erika_flutter/ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets index 0784b6e..ba76d87 100644 --- a/packages/erika_flutter/ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets +++ b/packages/erika_flutter/ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets @@ -258,7 +258,7 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand } private openPlayer(args: Map, result: MethodResult): void { - const metadataValue = args.get('metadata'); + const metadataValue: ESObject = args.get('metadata'); let metadata: ErikaMediaMetadata | null = null; if (metadataValue !== undefined && metadataValue !== null) { metadata = this.parseMediaMetadata(metadataValue); @@ -268,7 +268,7 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand } } const playerId = this.numberArg(args, 'playerId', 0); - const nativeArgs = new Map(args); + const nativeArgs: Map = new Map(args); nativeArgs.delete('metadata'); if (!this.invokePlayerNative('open', nativeArgs, result)) { return; @@ -530,15 +530,15 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand if (!(value instanceof Map)) { return null; } - const metadata = value as Map; - const titleValue = metadata.get('title'); + const metadata: Map = value as Map; + const titleValue: ESObject = metadata.get('title'); if (typeof titleValue !== 'string' || titleValue.length === 0) { return null; } const parsed: ErikaMediaMetadata = { title: titleValue }; - const artist = metadata.get('artist'); - const album = metadata.get('album'); - const artwork = metadata.get('artwork'); + const artist: ESObject = metadata.get('artist'); + const album: ESObject = metadata.get('album'); + const artwork: ESObject = metadata.get('artwork'); if (typeof artist === 'string') { parsed.artist = artist; } @@ -631,7 +631,8 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand if (!this.players.has(playerId)) { return; } - const args = extra ?? new Map(); + const args: Map = + extra ?? new Map(); args.set('playerId', playerId); const raw = erikaNative.nativeInvoke( playerId, diff --git a/packages/erika_flutter/test/ohos_screenshot_contract_test.dart b/packages/erika_flutter/test/ohos_screenshot_contract_test.dart index 80cd197..db8040f 100644 --- a/packages/erika_flutter/test/ohos_screenshot_contract_test.dart +++ b/packages/erika_flutter/test/ohos_screenshot_contract_test.dart @@ -84,4 +84,23 @@ void main() { contains(r'$/liberika_capi.so'), ); }); + + test('OpenHarmony media controls avoid implicit ESObject types', () { + final plugin = File( + 'ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets', + ).readAsStringSync(); + + for (final declaration in [ + "const metadataValue: ESObject = args.get('metadata');", + 'const nativeArgs: Map =', + 'const metadata: Map =', + "const titleValue: ESObject = metadata.get('title');", + "const artist: ESObject = metadata.get('artist');", + "const album: ESObject = metadata.get('album');", + "const artwork: ESObject = metadata.get('artwork');", + 'const args: Map =', + ]) { + expect(plugin, contains(declaration)); + } + }); }