Преглед изворни кода

[feat]增加与原生对接的jumpAppPage

云天逵 пре 8 месеци
родитељ
комит
3bff11ff55
1 измењених фајлова са 32 додато и 0 уклоњено
  1. 32 0
      lib/plugins/keyboard_method_handler.dart

+ 32 - 0
lib/plugins/keyboard_method_handler.dart

@@ -7,6 +7,7 @@ import 'package:keyboard/data/repository/characters_repository.dart';
 import 'package:keyboard/data/repository/chat_repository.dart';
 import 'package:keyboard/data/repository/keyboard_repository.dart';
 import 'package:keyboard/utils/atmob_log.dart';
+import 'package:get/get.dart';
 
 import '../data/api/response/chat_prologue_response.dart';
 import '../data/api/response/chat_super_speak_response.dart';
@@ -59,6 +60,8 @@ class KeyboardMethodHandler {
         return _handleChatSuperSpeak(call);
       case 'chatPrologue':
         return _handleChatPrologue(call);
+      case 'jumpAppPage':
+        return _handleJumpAppPage(call);
 
       default:
         throw MissingPluginException('Not implemented: ${call.method}');
@@ -198,4 +201,33 @@ class KeyboardMethodHandler {
       return '{}';
     }
   }
+
+  Future<String> _handleJumpAppPage(MethodCall call) async {
+    try {
+      final String path = call.arguments['path'];
+      final dynamic args = call.arguments['args'];
+
+      Map<String, dynamic> parsedArgs = {};
+      if (args is String && args.isNotEmpty) {
+        try {
+          parsedArgs = Map<String, dynamic>.from(json.decode(args));
+        } catch (e) {
+
+          return '{}';
+        }
+      } else if (args is Map) {
+        parsedArgs = Map<String, dynamic>.from(args);
+      }
+      Get.toNamed(
+        path,
+        parameters: parsedArgs.map((k, v) => MapEntry(k, v.toString())),
+      );
+
+      return '{}';
+    } catch (e) {
+      print("跳转失败: $e");
+
+      return '{}';
+    }
+  }
 }