Procházet zdrojové kódy

[feat]键盘插件,处理Api调用失败的情况

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

+ 3 - 3
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/base/CallResult.kt

@@ -7,13 +7,13 @@ import java.io.Serializable
  * 调用Flutter方法,通用结构
  */
 @Keep
-data class CallResult<T>(
+data class CallResult(
     /**
      * 响应码
      */
     val code: Int,
     /**
-     * 响应数据
+     * 消息
      */
-    val data: T
+    val message: String
 ) : Serializable

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

@@ -5,6 +5,7 @@ import android.os.Looper
 import com.atmob.keyboard_android.constant.PluginConfig
 import com.atmob.keyboard_android.util.JsonUtil
 import com.atmob.keyboard_android.util.LogUtil
+import com.atmob.keyboard_android.util.bridge.model.base.CallResult
 import io.flutter.embedding.engine.FlutterEngine
 import io.flutter.plugin.common.MethodChannel
 
@@ -54,6 +55,18 @@ class FlutterMethodCaller {
                 if (isReturnJson) {
                     val resultJson = result.toString()
                     try {
+                        // 先尝试解析json,如果code不为0,就是失败
+                        val result = JsonUtil.parseJsonByClass<CallResult>(
+                            resultJson,
+                            CallResult::class.java
+                        )
+                        if (result.code != 0) {
+                            runOnUIThread {
+                                onFail?.invoke(result.message)
+                            }
+                            return
+                        }
+                        // 成功
                         val resultObj = JsonUtil.parseJsonByClass<T>(resultJson, modelClazz)
                         runOnUIThread {
                             onSuccess?.invoke(resultObj)