ソースを参照

[feat]切换登录,刷新键盘数据

hezihao 7 ヶ月 前
コミット
74c5a6ad68

+ 15 - 4
lib/data/repository/account_repository.dart

@@ -42,7 +42,9 @@ class AccountRepository {
   Rxn<MemberInfo> memberStatusInfo = Rxn<MemberInfo>();
 
   bool get isVipUser =>
-      memberStatusInfo.value != null && memberStatusInfo.value!.isMember && isLogin.value;
+      memberStatusInfo.value != null &&
+      memberStatusInfo.value!.isMember &&
+      isLogin.value;
 
   int? _lastRequestCodeTime;
   int _errorCodeTimes = 0;
@@ -205,8 +207,8 @@ class AccountRepository {
     KVUtil.putString(keyAccountLoginPhoneNum, phoneNum);
     KVUtil.putString(keyAccountLoginToken, authToken);
     keyboardRepository.refreshData();
-    // 登录登录,通知键盘刷新数据
-    KeyboardAndroidPlatform.refreshData();
+    // 登录,通知键盘刷新数据
+    _notifyKeyboardPluginRefreshData();
   }
 
   void onWechatLoginSuccess(String authToken) {
@@ -214,6 +216,8 @@ class AccountRepository {
     refreshUserInfo();
     KVUtil.putString(keyAccountLoginToken, authToken);
     keyboardRepository.refreshData();
+    // 微信登录,通知键盘刷新数据
+    _notifyKeyboardPluginRefreshData();
   }
 
   void logout() {
@@ -229,7 +233,14 @@ class AccountRepository {
     KVUtil.putString(Constants.keyboardSelect, null);
     DailyLimiterUtil.clearDailyLimitData("SurpriseDialog");
     // 退出登录,通知键盘刷新数据
-    KeyboardAndroidPlatform.refreshData();
+    _notifyKeyboardPluginRefreshData();
+  }
+
+  /// 通知键盘刷新数据
+  void _notifyKeyboardPluginRefreshData() {
+    Future.delayed(const Duration(milliseconds: 500), () {
+      KeyboardAndroidPlatform.refreshData();
+    });
   }
 
   // 意见反馈

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

@@ -148,10 +148,10 @@ class KeyboardAndroidPlugin : FlutterPlugin, MethodCallHandler {
             "refreshData" -> {
                 KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
                     // 刷新数据
+                    getCurrentKeyboardInfo()
                     getKeyboardList()
                     getCharacterList()
                     getPrologueList()
-                    getCurrentKeyboardInfo()
                 }
             }
 

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

@@ -32,13 +32,13 @@ import com.atmob.keyboard_android.util.KeyboardGuideDialogUtil
 import com.atmob.keyboard_android.util.KeyboardGuideRecordUtil
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.LogUtil
+import com.atmob.keyboard_android.util.ToastUtil
 import com.atmob.keyboard_android.util.UserInfoHelper
 import com.atmob.keyboard_android.util.bridge.FlutterBridgeManager
 import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp.CharacterInfo
 import com.atmob.keyboard_android.util.recyclerview.GridDivider
 import com.atmob.keyboard_android.widget.LongTouchContainer
 import com.blankj.utilcode.util.ConvertUtils
-import com.blankj.utilcode.util.ToastUtils
 import com.gcssloop.widget.PagerGridLayoutManager
 import com.gcssloop.widget.PagerGridLayoutManager.PageListener
 import com.gcssloop.widget.PagerGridSnapHelper
@@ -419,7 +419,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.userClipboardData?.value
                 ?: ""
         if (clipboardText.isBlank()) {
-            ToastUtils.showShort(context.resources.getString(R.string.no_clipboard_data_tip))
+            ToastUtil.showToast(context.resources.getString(R.string.no_clipboard_data_tip))
             return
         }
 

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

@@ -23,12 +23,12 @@ import com.atmob.keyboard_android.model.AiKeyboardKeyModel
 import com.atmob.keyboard_android.util.InputMethodUtil
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.LogUtil
+import com.atmob.keyboard_android.util.ToastUtil
 import com.atmob.keyboard_android.util.UserInfoHelper
 import com.atmob.keyboard_android.util.recyclerview.GridDivider
 import com.atmob.keyboard_android.widget.LongTouchContainer
 import com.atmob.keyboard_android.widget.indicator.TabPagerTitleView
 import com.blankj.utilcode.util.ConvertUtils
-import com.blankj.utilcode.util.ToastUtils
 import com.gcssloop.widget.PagerGridLayoutManager
 import com.gcssloop.widget.PagerGridLayoutManager.PageListener
 import com.gcssloop.widget.PagerGridSnapHelper
@@ -395,7 +395,7 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.userClipboardData?.value
                 ?: ""
         if (clipboardText.isBlank()) {
-            ToastUtils.showShort(context.resources.getString(R.string.no_clipboard_data_tip))
+            ToastUtil.showToast(context.resources.getString(R.string.no_clipboard_data_tip))
             return
         }
 

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

@@ -438,7 +438,7 @@ class KeyboardViewModel : ViewModel() {
                     val infos = it.keyboardInfos
                     // 数据为空
                     if (infos.isEmpty()) {
-                        onFail.invoke(-1, "暂无数据")
+                        onFail.invoke(-1, "")
                     } else {
                         // 默认使用系统键盘
                         val systemKeyboard = infos.filter {

+ 27 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/DelayUtil.kt

@@ -0,0 +1,27 @@
+package com.atmob.keyboard_android.util
+
+import android.os.Handler
+import android.os.Looper
+
+/**
+ * 延迟工具类
+ */
+class DelayUtil private constructor() {
+    companion object {
+        private val mMainHandler = Handler(Looper.getMainLooper())
+
+        /**
+         *
+         */
+        fun post(action: () -> Unit) {
+            mMainHandler.post(action)
+        }
+
+        /**
+         * 延迟指定毫秒后执行
+         */
+        fun postDelay(action: () -> Unit, delayMillis: Long) {
+            mMainHandler.postDelayed(action, delayMillis)
+        }
+    }
+}

+ 31 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/ToastUtil.kt

@@ -0,0 +1,31 @@
+package com.atmob.keyboard_android.util
+
+import android.os.Handler
+import android.os.Looper
+import android.widget.Toast
+
+/**
+ * Toast工具类
+ */
+class ToastUtil private constructor() {
+    companion object {
+        private val mMainHandler = Handler(Looper.getMainLooper())
+
+        /**
+         * 显示Toast
+         */
+        fun showToast(msg: String?) {
+            if (msg == null || msg.isBlank()) {
+                return
+            }
+            val action = {
+                Toast.makeText(ContextUtil.getContext(), msg, Toast.LENGTH_SHORT).show()
+            }
+            if (Thread.currentThread() == Looper.getMainLooper().thread) {
+                action.invoke()
+            } else {
+                mMainHandler.post(action)
+            }
+        }
+    }
+}

+ 2 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/error/ErrorHandler.kt

@@ -3,8 +3,8 @@ package com.atmob.keyboard_android.util.error
 import com.atmob.keyboard_android.component.ComponentMediator
 import com.atmob.keyboard_android.component.root.IKeyboardRootComponent
 import com.atmob.keyboard_android.enums.ServerErrorCode
+import com.atmob.keyboard_android.util.ToastUtil
 import com.atmob.keyboard_android.util.UserInfoHelper
-import com.blankj.utilcode.util.ToastUtils
 
 /**
  * 错误处理类
@@ -38,7 +38,7 @@ class ErrorHandler private constructor() {
             }
 
             if (needToast) {
-                ToastUtils.showShort(errorMessage)
+                ToastUtil.showToast(errorMessage)
             }
         }
     }