Przeglądaj źródła

[feat]键盘引导页,修复引导弹窗,在第一次未切换未默认键盘时,没弹出的问题。2)修复登录KV值,没有更新的问题

hezihao 7 miesięcy temu
rodzic
commit
2e7d82ebe9

+ 2 - 0
lib/data/repository/account_repository.dart

@@ -153,6 +153,7 @@ class AccountRepository {
             if (response.loginStatus == 1) {
               print("loginStatus == 1");
               isLogin.value = true;
+              KVUtil.putBool(Constants.keyIsLogin, true);
             }
             if (response.loginStatus == 0) {
               print("loginStatus == 0");
@@ -213,6 +214,7 @@ class AccountRepository {
     KVUtil.putString(keyAccountLoginPhoneNum, null);
     KVUtil.putString(keyAccountLoginToken, null);
     memberStatusInfo.value = null;
+    KVUtil.putBool(Constants.keyIsLogin, false);
     KVUtil.putBool(Constants.keyIsMember, false);
     loginPhoneNum.value = null;
     isLogin.value = false;

+ 16 - 16
lib/di/get_it.config.dart

@@ -118,26 +118,26 @@ extension GetItInjectableX on _i174.GetIt {
     gh.factory<_i977.IntimacyAnalyseController>(
       () => _i977.IntimacyAnalyseController(),
     );
+    gh.factory<_i873.IntimacyGenerateCharacterEditController>(
+      () => _i873.IntimacyGenerateCharacterEditController(),
+    );
     gh.factory<_i279.IntimacyAnalyseScreenshotReplyController>(
       () => _i279.IntimacyAnalyseScreenshotReplyController(),
     );
+    gh.factory<_i211.IntroController>(() => _i211.IntroController());
     gh.factory<_i248.KeyboardGuidePageController>(
       () => _i248.KeyboardGuidePageController(),
     );
-    gh.factory<_i333.DiscountController>(() => _i333.DiscountController());
-    gh.factory<_i415.KeyboardMethodHandler>(
-      () => _i415.KeyboardMethodHandler(),
+    gh.factory<_i507.KeyboardTutorialController>(
+      () => _i507.KeyboardTutorialController(),
     );
     gh.factory<_i973.SplashController>(() => _i973.SplashController());
-    gh.factory<_i873.IntimacyGenerateCharacterEditController>(
-      () => _i873.IntimacyGenerateCharacterEditController(),
-    );
+    gh.factory<_i333.DiscountController>(() => _i333.DiscountController());
     gh.factory<_i1060.ZodiacLoveIntimacyController>(
       () => _i1060.ZodiacLoveIntimacyController(),
     );
-    gh.factory<_i211.IntroController>(() => _i211.IntroController());
-    gh.factory<_i507.KeyboardTutorialController>(
-      () => _i507.KeyboardTutorialController(),
+    gh.factory<_i415.KeyboardMethodHandler>(
+      () => _i415.KeyboardMethodHandler(),
     );
     gh.lazySingleton<_i495.WechatLoginService>(
       () => _i495.WechatLoginService(),
@@ -266,12 +266,12 @@ extension GetItInjectableX on _i174.GetIt {
         gh<_i738.IntimacyAnalyzeConfigHelper>(),
       ),
     );
-    gh.factory<_i161.KeyBoardController>(
-      () => _i161.KeyBoardController(gh<_i274.KeyboardRepository>()),
-    );
     gh.factory<_i566.IntimacyScaleController>(
       () => _i566.IntimacyScaleController(gh<_i274.KeyboardRepository>()),
     );
+    gh.factory<_i161.KeyBoardController>(
+      () => _i161.KeyBoardController(gh<_i274.KeyboardRepository>()),
+    );
     gh.factory<_i701.NewUserController>(
       () => _i701.NewUserController(
         gh<_i83.AccountRepository>(),
@@ -388,15 +388,15 @@ extension GetItInjectableX on _i174.GetIt {
         gh<_i274.KeyboardRepository>(),
       ),
     );
-    gh.factory<_i344.StoreController>(
-      () => _i344.StoreController(
+    gh.factory<_i326.NewDiscountController>(
+      () => _i326.NewDiscountController(
         gh<_i987.StoreRepository>(),
         gh<_i83.AccountRepository>(),
         gh<_i779.PaymentStatusManager>(),
       ),
     );
-    gh.factory<_i326.NewDiscountController>(
-      () => _i326.NewDiscountController(
+    gh.factory<_i344.StoreController>(
+      () => _i344.StoreController(
         gh<_i987.StoreRepository>(),
         gh<_i83.AccountRepository>(),
         gh<_i779.PaymentStatusManager>(),

+ 11 - 5
lib/module/keyboard_guide/guide_overlay/keyboard_guide_overlay_dialog.dart

@@ -2,19 +2,19 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
 import 'package:keyboard/resource/assets.gen.dart';
-
 import '../../../resource/colors.gen.dart';
 import '../../../utils/widget_location_util.dart';
 
 /// 键盘引导-引导覆盖弹窗
 class KeyboardGuideOverlayDialog {
-  static final tag = "KeyboardGuideOverlayDialog";
+  static final _tag = "KeyboardGuideOverlayDialog";
 
   /// 显示
   /// [targetWidgetKey] 目标组件的key
   /// [onFinishCallback] 结束引导时回调
   static void show(
     GlobalKey targetWidgetKey, {
+    required VoidCallback onCopyCallback,
     required VoidCallback onFinishCallback,
   }) {
     // 获取组件的位置信息
@@ -22,7 +22,7 @@ class KeyboardGuideOverlayDialog {
       targetWidgetKey,
     );
     SmartDialog.show(
-      tag: tag,
+      tag: _tag,
       backType: SmartBackType.normal,
       clickMaskDismiss: true,
       maskColor: ColorName.black70,
@@ -38,8 +38,14 @@ class KeyboardGuideOverlayDialog {
               Positioned(
                 left: targetWidgetInfo.position.dx,
                 top: targetWidgetInfo.position.dy,
-                child: Assets.images.iconKeyboardGuideOverlay1.image(
-                  width: 320.w,
+                child: GestureDetector(
+                  onTap: () {
+                    onCopyCallback();
+                    SmartDialog.dismiss(tag: _tag);
+                  },
+                  child: Assets.images.iconKeyboardGuideOverlay1.image(
+                    width: 320.w,
+                  ),
                 ),
               ),
             ],

+ 8 - 20
lib/module/keyboard_guide/keyboard_guide_controller.dart

@@ -4,11 +4,10 @@ import 'package:injectable/injectable.dart';
 import 'package:keyboard/module/keyboard_guide/enums/keyboard_guide_msg_type.dart';
 import 'package:keyboard/module/keyboard_tutorial/keyboard_tutorial_page.dart';
 import 'package:keyboard/resource/string.gen.dart';
-
 import '../../base/base_controller.dart';
 import '../../data/bean/keyboard_guide_msg.dart';
-import '../../plugins/default_keyboard_change_listener.dart';
-import '../../plugins/keyboard_android_platform.dart';
+import '../../utils/clipboard_util.dart';
+import '../../utils/default_keyboard_helper.dart';
 import '../../utils/floating_window_util.dart';
 import '../../utils/keyboard_guide_record_util.dart';
 import '../../utils/keyboard_tutorial_util.dart';
@@ -37,7 +36,7 @@ class KeyboardGuidePageController extends BaseController {
   final RxList<KeyboardGuideMsg> msgList = <KeyboardGuideMsg>[].obs;
 
   /// 是否选择为了默认键盘
-  final Rx<bool> isChooseDefaultKeyboard = false.obs;
+  RxBool get isDefaultKeyboard => DefaultKeyboardHelper.isDefaultKeyboard;
 
   @override
   void onInit() {
@@ -45,10 +44,6 @@ class KeyboardGuidePageController extends BaseController {
     inputFocusNode.addListener(_handleTextFieldFocusChange);
     // 初始化消息列表
     _initMsgList();
-    // 监听默认键盘切换事件
-    DefaultKeyboardMonitor.registerDefaultKeyboardChangeEvent(
-      _handleDefaultKeyboardChange,
-    );
     checkSetting();
 
     // 进入页面,就获取输入框焦点
@@ -62,23 +57,11 @@ class KeyboardGuidePageController extends BaseController {
     inputFocusNode.dispose();
     editingController.dispose();
     scrollController.dispose();
-    // 取消监听默认键盘切换事件
-    DefaultKeyboardMonitor.unRegisterDefaultKeyboardChangeEvent(
-      _handleDefaultKeyboardChange,
-    );
     super.onClose();
   }
 
-  /// 处理默认键盘切换
-  void _handleDefaultKeyboardChange(bool isDefaultKeyboard) {
-    isChooseDefaultKeyboard.value = isDefaultKeyboard;
-  }
-
   /// 马上检查设置
   void checkSetting() async {
-    KeyboardAndroidPlatform.isDefaultKeyboard().then((isDefaultKeyboard) {
-      _handleDefaultKeyboardChange(isDefaultKeyboard);
-    });
     // 没有完成键盘教程,却跳到了键盘引导页,说明是用户手动去设置修改了权限,则关闭该页面,跳回键盘教程页
     if (!await KeyboardTutorialUtil.isTutorialComplete()) {
       KeyboardTutorialPage.startAndOffMe();
@@ -197,6 +180,11 @@ class KeyboardGuidePageController extends BaseController {
     WidgetsBinding.instance.addPostFrameCallback((_) {
       KeyboardGuideOverlayDialog.show(
         guideMsgGlobalKey,
+        onCopyCallback: () {
+          // 复制
+          ClipboardUtil.copyToClipboard(StringName.keyboardGuideTaReply2);
+          ToastUtil.show(StringName.copySuccess);
+        },
         onFinishCallback: () {
           // 设置未非首次显示
           KeyboardGuideRecordUtil.setFirstShowKeyboardGuide(false);

+ 15 - 19
lib/module/keyboard_guide/keyboard_guide_page.dart

@@ -43,28 +43,24 @@ class KeyboardGuidePage extends BasePage<KeyboardGuidePageController> {
       backgroundColor: backgroundColor(),
       body: AppLifecycleWidget(
         onAppLifecycleCallback: (isForeground) {
-          // 切换到前台时,重新检查设置,更新按钮状态
           if (isForeground) {
+            // 切换到前台时,重新检查设置,更新按钮状态
             controller.checkSetting();
-          }
-        },
-        child: DelegateLifecycleWidget(
-          onCreateCallback: () {
-            // 选择为默认键盘,则尝试显示引导弹窗
-            if (controller.isChooseDefaultKeyboard.value) {
+            // 如果选择为默认键盘了,则尝试显示引导弹窗
+            if (controller.isDefaultKeyboard.value) {
               controller.showGuideOverlayDialog();
             }
-          },
-          child: Column(
-            children: [
-              // 标题栏
-              _buildTitleBar(),
-              // 消息列表
-              Expanded(flex: 1, child: _buildContent()),
-              // 底部输入栏
-              _buildBottomInput(),
-            ],
-          ),
+          }
+        },
+        child: Column(
+          children: [
+            // 标题栏
+            _buildTitleBar(),
+            // 消息列表
+            Expanded(flex: 1, child: _buildContent()),
+            // 底部输入栏
+            _buildBottomInput(),
+          ],
         ),
       ),
     );
@@ -139,7 +135,7 @@ class KeyboardGuidePage extends BasePage<KeyboardGuidePageController> {
   Widget _buildContent() {
     return Obx(() {
       // 键盘已启用,显示聊天列表
-      if (controller.isChooseDefaultKeyboard.value) {
+      if (controller.isDefaultKeyboard.value) {
         return _buildChatList();
       } else {
         // 未启用,显示引导动画

+ 2 - 0
lib/plugins/default_keyboard_change_listener.dart

@@ -9,6 +9,8 @@ typedef DefaultKeyboardChangeListenerCallback =
 
 /// 默认键盘改变事件监听器
 class DefaultKeyboardMonitor {
+  DefaultKeyboardMonitor._();
+
   /// 事件通道
   static const EventChannel _eventChannel = EventChannel(
     PluginConstant.flutterDefaultKeyboardEventChannelName,

+ 2 - 2
lib/plugins/keyboard_android_platform.dart

@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
 import 'package:keyboard/plugins/plugin_constant.dart';
 import 'package:keyboard/utils/atmob_log.dart';
 
-import 'default_keyboard_change_listener.dart';
+import '../utils/default_keyboard_helper.dart';
 import 'keyboard_android_service.dart';
 import 'keyboard_method_handler.dart';
 
@@ -26,7 +26,7 @@ class KeyboardAndroidPlatform {
     // 通知插件初始化
     await initPlugin();
     // 默认键盘切换监听器
-    DefaultKeyboardMonitor.init();
+    DefaultKeyboardHelper.init();
     startFlowingBall();
   }
 

+ 29 - 0
lib/utils/default_keyboard_helper.dart

@@ -0,0 +1,29 @@
+import 'package:get/get.dart';
+import '../plugins/default_keyboard_monitor.dart';
+import '../plugins/keyboard_android_platform.dart';
+
+/// 默认键盘帮助类
+class DefaultKeyboardHelper {
+  DefaultKeyboardHelper._();
+
+  /// 是否是默认键盘
+  static RxBool isDefaultKeyboard = false.obs;
+
+  /// 初始化
+  static void init() {
+    DefaultKeyboardMonitor.init();
+    // 监听默认键盘切换事件
+    DefaultKeyboardMonitor.registerDefaultKeyboardChangeEvent((isDefault) {
+      _handleDefaultKeyboardChange(isDefault);
+    });
+    // 马上获取一次数据
+    KeyboardAndroidPlatform.isDefaultKeyboard().then((isDefaultKeyboard) {
+      _handleDefaultKeyboardChange(isDefaultKeyboard);
+    });
+  }
+
+  /// 处理默认键盘切换
+  static void _handleDefaultKeyboardChange(bool isDefault) {
+    isDefaultKeyboard.value = isDefault;
+  }
+}