Explorar el Código

[feat]键盘插件,完善跳转

hezihao hace 7 meses
padre
commit
7c811c70b0

+ 2 - 2
android/app/src/main/kotlin/com/atmob/keyboard/AtmobApplication.kt

@@ -1,7 +1,7 @@
 package com.atmob.keyboard
 
 import android.app.Application
-import com.atmob.keyboard.config.AppConfig
+import com.atmob.keyboard_android.constant.PluginConfig
 import io.flutter.embedding.engine.FlutterEngine
 import io.flutter.embedding.engine.FlutterEngineCache
 import io.flutter.embedding.engine.dart.DartExecutor
@@ -20,6 +20,6 @@ class AtmobApplication : Application() {
         }
 
         // 将 FlutterEngine 添加到 FlutterEngineCache,使用指定的 engine ID 进行管理,MainActivity中要取回这个引擎来使用
-        FlutterEngineCache.getInstance().put(AppConfig.FLUTTER_ENGINE_ID, flutterEngine)
+        FlutterEngineCache.getInstance().put(PluginConfig.FLUTTER_ENGINE_ID, flutterEngine)
     }
 }

+ 5 - 5
android/app/src/main/kotlin/com/atmob/keyboard/MainActivity.kt

@@ -4,8 +4,8 @@ import android.content.Context
 import android.content.Intent
 import android.os.Handler
 import android.os.Looper
-import com.atmob.keyboard.config.AppConfig
-import com.atmob.keyboard.util.JumpAppPageUtil
+import com.atmob.keyboard_android.constant.PluginConfig
+import com.atmob.keyboard_android.util.jump.JumpHostAppPageUtil
 import io.flutter.embedding.android.FlutterActivity
 import io.flutter.embedding.engine.FlutterEngine
 import io.flutter.embedding.engine.FlutterEngineCache
@@ -17,13 +17,13 @@ class MainActivity : FlutterActivity() {
      * 使用预缓存的引擎
      */
     override fun provideFlutterEngine(context: Context): FlutterEngine? {
-        return FlutterEngineCache.getInstance().get(AppConfig.FLUTTER_ENGINE_ID)
+        return FlutterEngineCache.getInstance().get(PluginConfig.FLUTTER_ENGINE_ID)
     }
 
     override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
         super.configureFlutterEngine(flutterEngine)
         // 执行路由跳转
-        JumpAppPageUtil.jumpAppPage(intent, flutterEngine)
+        JumpHostAppPageUtil.jumpAppPage(intent, flutterEngine)
     }
 
     override fun onNewIntent(intent: Intent) {
@@ -31,7 +31,7 @@ class MainActivity : FlutterActivity() {
         setIntent(intent)
         // 执行路由跳转
         flutterEngine?.let {
-            JumpAppPageUtil.jumpAppPage(intent, it)
+            JumpHostAppPageUtil.jumpAppPage(intent, it)
         }
     }
 

+ 0 - 18
android/app/src/main/kotlin/com/atmob/keyboard/config/AppConfig.kt

@@ -1,18 +0,0 @@
-package com.atmob.keyboard.config
-
-/**
- * App配置
- */
-class AppConfig private constructor() {
-    companion object {
-        /**
-         * Flutter引擎Id
-         */
-        const val FLUTTER_ENGINE_ID = "my_engine_id"
-
-        /**
-         * 通道名称,和Flutter端要一一对应
-         */
-        const val FLUTTER_METHOD_CHANNEL_NAME = "keyboard_android"
-    }
-}

+ 0 - 54
android/app/src/main/kotlin/com/atmob/keyboard/util/JumpAppPageUtil.kt

@@ -1,54 +0,0 @@
-package com.atmob.keyboard.util
-
-import android.content.Intent
-import com.atmob.keyboard.config.AppConfig
-import io.flutter.embedding.engine.FlutterEngine
-import io.flutter.plugin.common.MethodChannel
-
-/**
- * Flutter页面跳转工具类
- */
-class JumpAppPageUtil private constructor() {
-    companion object {
-        /**
-         * 路由地址
-         */
-        private const val KEY_PATH = "path"
-
-        /**
-         * 路由跳转参数
-         */
-        private const val KEY_ARGS = "args"
-
-        /**
-         * Flutter的路由跳转方法
-         */
-        private const val FLUTTER_JUMP_APP_PAGE_METHOD = "jumpAppPage"
-
-        /**
-         * 跳转到Flutter页面
-         */
-        fun jumpAppPage(intent: Intent, engine: FlutterEngine) {
-            // 路由地址
-            val path = intent.getStringExtra(KEY_PATH) ?: ""
-            // 路由跳转参数,Json格式
-            val args = intent.getStringExtra(KEY_ARGS) ?: ""
-
-            if (path.isBlank()) {
-                return
-            }
-
-            val arguments = mapOf(
-                KEY_PATH to path,
-                KEY_ARGS to args
-            )
-
-            val methodChannel = MethodChannel(
-                engine.dartExecutor.binaryMessenger,
-                AppConfig.FLUTTER_METHOD_CHANNEL_NAME
-            )
-
-            methodChannel.invokeMethod(FLUTTER_JUMP_APP_PAGE_METHOD, arguments)
-        }
-    }
-}

+ 29 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/jump/IntentUtil.java

@@ -0,0 +1,29 @@
+package com.atmob.keyboard_android.util.jump;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Intent工具类
+ */
+public class IntentUtil {
+    /**
+     * Intent参数转Map
+     */
+    public static Map<String, Object> intentToMap(Intent intent) {
+        Map<String, Object> map = new HashMap<>();
+        if (intent == null) {
+            return map;
+        }
+        Bundle extras = intent.getExtras();
+        if (extras != null) {
+            for (String key : extras.keySet()) {
+                map.put(key, extras.get(key));
+            }
+        }
+        return map;
+    }
+}

+ 9 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/jump/JumpHostAppPageUtil.kt

@@ -1,9 +1,9 @@
 package com.atmob.keyboard_android.util.jump
 
+import android.content.Intent
 import com.atmob.keyboard_android.constant.PluginConfig
 import io.flutter.embedding.engine.FlutterEngine
 import io.flutter.plugin.common.MethodChannel
-import java.io.Serializable
 
 /**
  * Flutter页面跳转工具类
@@ -18,7 +18,14 @@ class JumpHostAppPageUtil private constructor() {
         /**
          * 跳转到Flutter页面
          */
-        fun jumpAppPage(params: Map<String, Serializable?>, engine: FlutterEngine) {
+        fun jumpAppPage(intent: Intent, engine: FlutterEngine) {
+            jumpAppPage(IntentUtil.intentToMap(intent), engine)
+        }
+
+        /**
+         * 跳转到Flutter页面
+         */
+        fun jumpAppPage(params: Map<String, Any?>, engine: FlutterEngine) {
             val methodChannel = MethodChannel(
                 engine.dartExecutor.binaryMessenger,
                 PluginConfig.FLUTTER_METHOD_CHANNEL_NAME