Procházet zdrojové kódy

[fix]亲密度值,更新键盘亲密度值时,同步键盘信息给键盘插件

hezihao před 7 měsíci
rodič
revize
cab8c35ac7

+ 5 - 0
lib/module/intimacy_scale/intimacy_scale_controller.dart

@@ -5,6 +5,7 @@ import 'package:keyboard/data/repository/keyboard_repository.dart';
 import 'package:keyboard/utils/toast_util.dart';
 import '../../data/bean/keyboard_info.dart';
 import '../../data/consts/error_code.dart';
+import '../../plugins/keyboard_android_platform.dart';
 import '../../utils/error_handler.dart';
 import '../../utils/http_handler.dart';
 import '../../widget/flutter_ruler_picker.dart';
@@ -72,6 +73,10 @@ class IntimacyScaleController extends BaseController {
         keyboardId: currentKeyboardInfo.value!.id!,
         intimacy: currentCustomIntimacy.value,
       );
+      // 通知键盘插件,更新键盘的亲密度值
+      var keyboardInfo = currentKeyboardInfo.value!;
+      keyboardInfo.intimacy = currentCustomIntimacy.value;
+      KeyboardAndroidPlatform.updateKeyboardInfo(keyboardInfo);
       await keyboardRepository.refreshData();
       Get.back();
     } catch (error) {

+ 6 - 0
lib/plugins/keyboard_android_platform.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
+import 'package:keyboard/data/bean/keyboard_info.dart';
 import 'package:keyboard/plugins/plugin_constant.dart';
 import 'package:keyboard/utils/atmob_log.dart';
 
@@ -95,4 +96,9 @@ class KeyboardAndroidPlatform {
     debugPrint('isTargetKeyboardEnabled value: $result');
     return result;
   }
+
+  /// 更新键盘信息
+  static void updateKeyboardInfo(KeyboardInfo keyboardInfo) {
+    _keyboardAndroidService.updateKeyboardInfo(keyboardInfo);
+  }
 }

+ 7 - 0
lib/plugins/keyboard_android_service.dart

@@ -1,3 +1,6 @@
+import 'dart:convert';
+
+import 'package:keyboard/data/bean/keyboard_info.dart';
 import 'package:keyboard_android/keyboard_android.dart';
 
 class KeyboardAndroidService {
@@ -30,4 +33,8 @@ class KeyboardAndroidService {
   Future<bool> isDefaultKeyboard() {
     return _plugin.isDefaultKeyboard();
   }
+
+  updateKeyboardInfo(KeyboardInfo keyboardInfo) {
+    _plugin.updateKeyboardInfo(jsonEncode(keyboardInfo));
+  }
 }

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

@@ -8,10 +8,13 @@ import com.atmob.keyboard_android.component.base.interceptor.RouteInterceptorMan
 import com.atmob.keyboard_android.component.listener.ComponentUpdateLoggingListener
 import com.atmob.keyboard_android.constant.PluginConfig
 import com.atmob.keyboard_android.floating.FloatingButtonService
+import com.atmob.keyboard_android.model.KeyboardSelectModel
 import com.atmob.keyboard_android.util.AppMonitor
 import com.atmob.keyboard_android.util.ContextUtil
 import com.atmob.keyboard_android.util.FloatingWindowUtil
 import com.atmob.keyboard_android.util.InputMethodUtil
+import com.atmob.keyboard_android.util.JsonUtil
+import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.LogUtil
 import com.atmob.keyboard_android.util.activity.ActivityProvider
 import com.atmob.keyboard_android.util.bridge.FlutterBridgeManager
@@ -123,6 +126,16 @@ class KeyboardAndroidPlugin : FlutterPlugin, MethodCallHandler {
                 result.success(InputMethodUtil.isDefaultKeyboard(context))
             }
 
+            // 更新键盘信息
+            "updateKeyboardInfo" -> {
+                val keyboardInfoJson = call.arguments<String>() ?: ""
+                val currentKeyboardInfo =
+                    JsonUtil.parseJsonByClass(keyboardInfoJson, KeyboardSelectModel::class.java)
+                KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                    ?.updateCurrentKeyboardInfo(currentKeyboardInfo)
+                result.success(null)
+            }
+
             else -> {
                 result.notImplemented()
             }

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

@@ -5,7 +5,7 @@ import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
 import com.atmob.keyboard_android.util.bridge.model.req.SuperReplyReq
 import com.atmob.keyboard_android.util.bridge.model.req.SuperSpeakReq
 import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
-import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
+import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardInfoResp
 import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.PrologueListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.PrologueResp
@@ -65,7 +65,7 @@ class KeyboardRepository {
      * 获取当前键盘信息
      */
     fun getCurrentKeyboardInfo(
-        onSuccess: (resultObj: CurrentKeyboardIdResp) -> Unit,
+        onSuccess: (resultObj: CurrentKeyboardInfoResp) -> Unit,
         onFail: (errorCode: Int, errorMsg: String) -> Unit
     ) {
         FlutterBridgeManager.getCurrentKeyboardInfo(onSuccess, onFail)

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

@@ -250,6 +250,13 @@ class KeyboardViewModel : ViewModel() {
     }
 
     /**
+     * 更新当前键盘信息
+     */
+    fun updateCurrentKeyboardInfo(keyboardInfo: KeyboardSelectModel) {
+        _currentKeyboardInfo.value = keyboardInfo
+    }
+
+    /**
      * 选择键盘
      *
      * @param selectModel 键盘选择信息

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

@@ -10,7 +10,7 @@ import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
 import com.atmob.keyboard_android.util.bridge.model.req.SuperReplyReq
 import com.atmob.keyboard_android.util.bridge.model.req.SuperSpeakReq
 import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
-import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
+import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardInfoResp
 import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.PrologueListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.PrologueResp
@@ -137,12 +137,12 @@ object FlutterBridgeManager : IBridgeApi {
     }
 
     override fun getCurrentKeyboardInfo(
-        onSuccess: (CurrentKeyboardIdResp) -> Unit,
+        onSuccess: (CurrentKeyboardInfoResp) -> Unit,
         onFail: (errorCode: Int, errorMsg: String) -> Unit
     ) {
-        mFlutterMethodCaller.callMethod<CurrentKeyboardIdResp>(
+        mFlutterMethodCaller.callMethod<CurrentKeyboardInfoResp>(
             FlutterMethod.GET_CURRENT_KEYBOARD_INFO.methodName,
-            modelClazz = CurrentKeyboardIdResp::class.java,
+            modelClazz = CurrentKeyboardInfoResp::class.java,
             onSuccess = onSuccess,
             onFail = onFail
         )

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

@@ -2,7 +2,7 @@ package com.atmob.keyboard_android.util.bridge.api
 
 import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
 import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
-import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
+import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardInfoResp
 import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.PrologueListResp
 
@@ -31,7 +31,7 @@ interface KeyboardApi {
      * 获取当前键盘信息
      */
     fun getCurrentKeyboardInfo(
-        onSuccess: (CurrentKeyboardIdResp) -> Unit,
+        onSuccess: (CurrentKeyboardInfoResp) -> Unit,
         onFail: (errorCode: Int, errorMsg: String) -> Unit
     )
 

+ 1 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/CurrentKeyboardIdResp.kt

@@ -7,7 +7,7 @@ import java.io.Serializable
  * 获取当前键盘Id的响应体
  */
 @Keep
-data class CurrentKeyboardIdResp(
+data class CurrentKeyboardInfoResp(
     /**
      * 键盘Id
      */

+ 5 - 0
plugins/keyboard_android/lib/keyboard_android.dart

@@ -40,6 +40,11 @@ class KeyboardAndroid {
     return KeyboardAndroidPlatform.instance.isDefaultKeyboard();
   }
 
+  /// 更新键盘信息
+  void updateKeyboardInfo(String keyboardInfoJson) {
+    KeyboardAndroidPlatform.instance.updateKeyboardInfo(keyboardInfoJson);
+  }
+
   // /// 获取键映射
   // static Future<List<Map<String, String>>> getKeyMappings() {
   //   return KeyboardAndroidPlatform.instance.getKeyMappings();

+ 5 - 0
plugins/keyboard_android/lib/keyboard_android_method_channel.dart

@@ -56,6 +56,11 @@ class MethodChannelKeyboardAndroid extends KeyboardAndroidPlatform {
     return await methodChannel.invokeMethod<bool>('isDefaultKeyboard') ?? false;
   }
 
+  @override
+  void updateKeyboardInfo(String keyboardInfoJson) {
+    methodChannel.invokeMethod('updateKeyboardInfo', keyboardInfoJson);
+  }
+
   // /// 获取键映射
   // @override
   // Future<List<Map<String, String>>> getKeyMappings() async {

+ 6 - 0
plugins/keyboard_android/lib/keyboard_android_platform_interface.dart

@@ -69,6 +69,12 @@ abstract class KeyboardAndroidPlatform extends PlatformInterface {
     );
   }
 
+  void updateKeyboardInfo(String keyboardInfoJson) {
+    throw UnimplementedError(
+      'updateKeyboardInfo(String keyboardInfoJson) has not been implemented.',
+    );
+  }
+
   // /// 获取键映射(需要在 `MethodChannelKeyboardAndroid` 实现)
   // Future<List<Map<String, String>>> getKeyMappings() {
   //   throw UnimplementedError('getKeyMappings() has not been implemented.');

+ 5 - 0
plugins/keyboard_android/test/keyboard_android_test.dart

@@ -44,6 +44,11 @@ class MockKeyboardAndroidPlatform
   Future<bool> isDefaultKeyboard() {
     throw UnimplementedError();
   }
+
+  @override
+  void updateKeyboardInfo(String keyboardInfoJson) {
+    throw UnimplementedError();
+  }
 }
 
 void main() {