Pārlūkot izejas kodu

[feat]键盘插件,完善,对接Flutter的键盘列表API方法

hezihao 8 mēneši atpakaļ
vecāks
revīzija
9779935a4c

+ 5 - 2
lib/module/mine/mine_controller.dart

@@ -11,6 +11,7 @@ import 'package:keyboard/module/store/discount/discount_view.dart';
 
 import '../../data/consts/error_code.dart';
 import '../../data/repository/account_repository.dart';
+import '../../plugins/keyboard_android_platform.dart';
 import '../../resource/colors.gen.dart';
 import '../profile/profile_page.dart';
 import '../store/discount/discount_controller.dart';
@@ -40,8 +41,10 @@ class MineController extends BaseController {
   }
 
   clickVip() {
-    debugPrint('clickVip');
-    StorePage.start();
+    // debugPrint('clickVip');
+    // StorePage.start();
+    KeyboardAndroidPlatform.getInstance().enableFloatingWindow(true);
+    KeyboardAndroidPlatform.getInstance().openInputMethodSettings();
   }
 
   clickOnlineCustomerService() {

+ 3 - 2
lib/plugins/keyboard_android_platform.dart

@@ -35,11 +35,12 @@ class KeyboardAndroidPlatform {
     _channel.setMethodCallHandler((MethodCall call) async {
       switch (call.method) {
         case 'getKeyboardList':
-          String? type = call.arguments['type'];
+          String? type = call.arguments?['type'] as String?;
           var keyboardList = await keyboardRepository.getKeyboardList(
             type: type,
           );
-          return jsonEncode(keyboardList.toJson());
+          String json = jsonEncode(keyboardList.toJson());
+          return json;
 
         default:
           throw MissingPluginException('Not implemented');

+ 1 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardSelectComponent.kt

@@ -159,7 +159,7 @@ class KeyboardSelectComponent @JvmOverloads constructor(
      */
     private fun loadKeyboardList() {
         KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.getKeyboardList {
-            ToastUtils.showShort(it)
+            ToastUtils.showLong(it)
         }
     }
 }

+ 2 - 3
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/repository/KeyboardRepository.kt

@@ -1,8 +1,7 @@
 package com.atmob.keyboard_android.mvvm.repository
 
-import com.atmob.keyboard_android.model.KeyboardSelectModel
 import com.atmob.keyboard_android.util.bridge.FlutterBridgeManager
-import com.atmob.keyboard_android.util.bridge.model.CallResultList
+import com.atmob.keyboard_android.util.bridge.model.KeyboardListModel
 
 /**
  * 键盘Repository
@@ -12,7 +11,7 @@ class KeyboardRepository {
      * 获取键盘列表
      */
     fun getKeyboardList(
-        onSuccess: (resultObj: CallResultList<KeyboardSelectModel>) -> Unit,
+        onSuccess: (resultObj: KeyboardListModel) -> Unit,
         onFail: (msg: String) -> Unit
     ) {
         FlutterBridgeManager.getKeyboardList(onSuccess, onFail)

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

@@ -169,7 +169,7 @@ class KeyboardViewModel : ViewModel() {
      */
     fun getKeyboardList(onFail: (msg: String) -> Unit) {
         mKeyboardRepository.getKeyboardList(onSuccess = {
-            _keyboardList.value = it.data
+            _keyboardList.value = it.keyboardInfos
         }, onFail)
     }
 }

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

@@ -2,8 +2,7 @@ package com.atmob.keyboard_android.util.bridge
 
 import com.atmob.keyboard_android.constant.PluginConfig
 import com.atmob.keyboard_android.enums.FlutterMethod
-import com.atmob.keyboard_android.model.KeyboardSelectModel
-import com.atmob.keyboard_android.util.bridge.model.CallResultList
+import com.atmob.keyboard_android.util.bridge.model.KeyboardListModel
 import com.atmob.keyboard_android.util.bridge.util.FlutterMethodCaller
 import com.atmob.keyboard_android.util.bridge.util.NativeMethodRegistry
 import io.flutter.embedding.engine.FlutterEngineCache
@@ -36,11 +35,12 @@ object FlutterBridgeManager : IBridgeApi {
     }
 
     override fun getKeyboardList(
-        onSuccess: (resultObj: CallResultList<KeyboardSelectModel>) -> Unit,
+        onSuccess: (resultObj: KeyboardListModel) -> Unit,
         onFail: (msg: String) -> Unit
     ) {
-        mFlutterMethodCaller.callMethod<CallResultList<KeyboardSelectModel>>(
+        mFlutterMethodCaller.callMethod<KeyboardListModel>(
             FlutterMethod.GET_KEYBOARD_LIST.methodName,
+            modelClazz = KeyboardListModel::class.java,
             onSuccess = onSuccess,
             onFail = onFail
         )

+ 3 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/IBridgeApi.kt

@@ -1,7 +1,8 @@
 package com.atmob.keyboard_android.util.bridge
 
 import com.atmob.keyboard_android.model.KeyboardSelectModel
-import com.atmob.keyboard_android.util.bridge.model.CallResultList
+import com.atmob.keyboard_android.util.bridge.model.CallResult
+import com.atmob.keyboard_android.util.bridge.model.KeyboardListModel
 
 /**
  * 定义桥接交互API
@@ -16,7 +17,7 @@ interface IBridgeApi {
      * 获取键盘列表
      */
     fun getKeyboardList(
-        onSuccess: (resultObj: CallResultList<KeyboardSelectModel>) -> Unit,
+        onSuccess: (resultObj: KeyboardListModel) -> Unit,
         onFail: (msg: String) -> Unit
     )
 }

+ 11 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/KeyboardListModel.kt

@@ -0,0 +1,11 @@
+package com.atmob.keyboard_android.util.bridge.model
+
+import com.atmob.keyboard_android.model.KeyboardSelectModel
+import java.io.Serializable
+
+/**
+ * 键盘列表模型
+ */
+data class KeyboardListModel(
+    val keyboardInfos: List<KeyboardSelectModel>
+) : Serializable

+ 2 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/util/FlutterMethodCaller.kt

@@ -29,13 +29,14 @@ class FlutterMethodCaller {
      */
     fun <T> callMethod(
         methodName: String, args: Any? = null,
+        modelClazz: Class<T>,
         onSuccess: ((resultObj: T) -> Unit)? = null,
         onFail: ((msg: String) -> Unit)? = null
     ) {
         mMethodChannel.invokeMethod(methodName, args, object : MethodChannel.Result {
             override fun success(result: Any?) {
                 val resultJson = result.toString()
-                val resultObj = JsonUtil.parseJson<T>(resultJson)
+                val resultObj = JsonUtil.parseJsonByClass<T>(resultJson, modelClazz)
                 onSuccess?.invoke(resultObj)
             }