فهرست منبع

[fix]键盘插件,如果键盘列表,一个都没选中,则默认取通用键盘

hezihao 7 ماه پیش
والد
کامیت
7d7f8af8d0

+ 1 - 0
lib/module/mine/mine_controller.dart

@@ -69,6 +69,7 @@ class MineController extends BaseController {
   }
 
   clickOnlineCustomerService() {
+    final userInfo = accountRepository.userInfo.value;
     if (isLogin) {
       debugPrint('clickOnlineCustomerService');
       goToCustomerService();

+ 7 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/KeyboardAndroidPlugin.kt

@@ -42,6 +42,13 @@ class KeyboardAndroidPlugin : FlutterPlugin, MethodCallHandler {
         private fun initActivityUtil() {
             ActivityProvider.initialize()
             AppMonitor.get().initialize(ContextUtil.getContext())
+//            AppMonitor.get().register(object : AppMonitor.CallbackAdapter() {
+//                override fun onAppUIDestroyed() {
+//                    super.onAppUIDestroyed()
+//                    // 所有Activity页面都销毁了,静默让Flutter跳转去启动页
+//                    FlutterBridgeManager.jump2SplashPage(quiesceJump = true)
+//                }
+//            })
         }
 
         /**

+ 5 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/constant/FlutterHostConstants.kt

@@ -31,6 +31,11 @@ interface FlutterHostConstants {
         const val KEY_TAB_NAME = "tabName"
 
         /**
+         * 启动页
+         */
+        const val PAGE_SPLASH = "/"
+
+        /**
          * 登录页
          */
         const val PAGE_LOGIN = "/login"

+ 12 - 4
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/viewmodel/KeyboardViewModel.kt

@@ -228,10 +228,18 @@ class KeyboardViewModel : ViewModel() {
     fun getKeyboardList() {
         mKeyboardRepository.getKeyboardList(onSuccess = {
             val infos = it.keyboardInfos
-            // 如果只有1条数据,并且为通用键盘,则直接选中
-            if (infos.size == 1) {
-                val keyboardInfo = infos.first()
-                if (KeyboardType.isSystem(keyboardInfo.type ?: "")) {
+            // 如果所有都没选中,则默认选中通用键盘
+            val hasSelectKeyboard = infos.filter {
+                it.isSelect == true
+            }.toList().isNotEmpty()
+            if (!hasSelectKeyboard) {
+                // 找到系统键盘
+                val systemKeyboard = infos.filter {
+                    KeyboardType.isSystem(it.type ?: "")
+                }.toList()
+                // 勾选默认键盘
+                if (systemKeyboard.isNotEmpty()) {
+                    val keyboardInfo = infos.first()
                     keyboardInfo.isSelect = true
                 }
             }

+ 24 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/FlutterPageLaunchUtil.kt

@@ -14,6 +14,30 @@ import java.io.Serializable
 class FlutterPageLaunchUtil private constructor() {
     companion object {
         /**
+         * 只让Flutter进行页面跳转。不涉及原生部分
+         */
+        fun onlyFlutterJumpPage(
+            path: String,
+            args: Map<String, Serializable?> = mapOf<String, Serializable>(),
+            offAll: Boolean = false
+        ) {
+            val flutterEngine = FlutterEngineHolder.getFlutterEngine()
+            if (flutterEngine != null) {
+                val params = mutableMapOf<String, Serializable?>()
+                // 添加跳转来源
+                params.put(FlutterHostConstants.KEY_JUMP_SOURCE, "keyboard_android")
+                // 添加Flutter路由路径
+                params.put(FlutterHostConstants.KEY_PATH, path)
+                // 添加跳转参数
+                params.put(FlutterHostConstants.KEY_ARGS, JsonUtil.toJson(args))
+                // 是否跳转到新页面后,并清除上层的所有页面
+                params.put(FlutterHostConstants.OFF_ALL, offAll)
+                // 再通知Flutter进行页面跳转
+                JumpHostAppPageUtil.jumpAppPage(params, flutterEngine)
+            }
+        }
+
+        /**
          * 调起Flutter的某个页面
          *
          * @param path Flutter的页面路由

+ 9 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/FlutterBridgeManager.kt

@@ -74,6 +74,15 @@ object FlutterBridgeManager : IBridgeApi {
         )
     }
 
+    override fun jump2SplashPage(quiesceJump: Boolean) {
+        val path = FlutterHostConstants.PAGE_SPLASH
+        if (quiesceJump) {
+            FlutterPageLaunchUtil.onlyFlutterJumpPage(path)
+        } else {
+            FlutterPageLaunchUtil.jumpFlutterPage(path)
+        }
+    }
+
     override fun jump2LoginPage() {
         FlutterPageLaunchUtil.jumpFlutterPage(FlutterHostConstants.PAGE_LOGIN)
     }

+ 5 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/RouteJumpApi.kt

@@ -5,6 +5,11 @@ package com.atmob.keyboard_android.util.bridge.api
  */
 interface RouteJumpApi {
     /**
+     * 跳转去启动页
+     */
+    fun jump2SplashPage(quiesceJump: Boolean)
+
+    /**
      * 跳转到登录页
      */
     fun jump2LoginPage()