Browse Source

no message

xiaobai 3 months ago
parent
commit
afdc792ddc
75 changed files with 491 additions and 439 deletions
  1. 1 1
      ios/Podfile.lock
  2. 1 1
      lib/common/AC.dart
  3. 26 27
      lib/main.dart
  4. 5 5
      lib/module/user_service.dart
  5. 2 2
      lib/net/http_utils.dart
  6. 5 5
      lib/pages/explore/main/controller/discover_ctrl.dart
  7. 3 3
      lib/pages/explore/main/page/banner_web_page.dart
  8. 5 5
      lib/pages/footprint/blank_journal/controller/blank_journal_ctrl.dart
  9. 3 3
      lib/pages/footprint/blank_journal/page/blank_journal_page.dart
  10. 11 11
      lib/pages/footprint/blank_journal/page/journal_detail_page.dart
  11. 1 1
      lib/pages/main_ctrl.dart
  12. 3 3
      lib/pages/my/badge/page/badge_all_page.dart
  13. 2 2
      lib/pages/my/badge/page/badge_detail_page.dart
  14. 3 3
      lib/pages/my/badge/page/badge_my_page.dart
  15. 5 5
      lib/pages/my/lately_record/page/lately_record_page.dart
  16. 11 11
      lib/pages/my/lately_record/page/record_detail_page.dart
  17. 1 1
      lib/pages/my/lately_record/view/practice_record_share_view.dart
  18. 3 3
      lib/pages/my/login/page/login_page.dart
  19. 3 3
      lib/pages/my/login/page/privacy_policy_page.dart
  20. 3 3
      lib/pages/my/login/page/user_agreement_page.dart
  21. 4 4
      lib/pages/my/main/controller/mine_ctrl.dart
  22. 7 7
      lib/pages/my/main/controller/personal_info_ctrl.dart
  23. 5 5
      lib/pages/my/main/page/avatar_big_page.dart
  24. 4 4
      lib/pages/my/main/page/mine_list_page.dart
  25. 2 2
      lib/pages/my/main/page/personal_info_page.dart
  26. 5 5
      lib/pages/my/mood_analysis/page/mood_analysis_page.dart
  27. 3 3
      lib/pages/my/mood_analysis/page/mood_record_history_page.dart
  28. 3 3
      lib/pages/my/mood_analysis/page/mood_record_list_page.dart
  29. 1 1
      lib/pages/my/mood_analysis/view/calendar_view.dart
  30. 9 9
      lib/pages/my/mood_analysis/view/mood_record_list_cell.dart
  31. 3 3
      lib/pages/my/reason_mood/controller/reason_mood_ctrl.dart
  32. 5 5
      lib/pages/my/setting/page/ai_role_page.dart
  33. 2 2
      lib/pages/my/setting/page/ai_settting_page.dart
  34. 3 3
      lib/pages/my/setting/page/contact_us_page.dart
  35. 1 1
      lib/pages/my/setting/page/dark_mode_page.dart
  36. 3 3
      lib/pages/my/setting/page/feedback_page.dart
  37. 3 3
      lib/pages/my/setting/page/newcome_gift_page.dart
  38. 5 5
      lib/pages/my/setting/page/notice_setting_page.dart
  39. 3 3
      lib/pages/my/setting/page/order_manage_page.dart
  40. 1 1
      lib/pages/my/setting/page/privacy_setting_page.dart
  41. 3 3
      lib/pages/my/setting/page/selfhelp_resource_page.dart
  42. 6 6
      lib/pages/my/setting/page/setting_page.dart
  43. 6 6
      lib/pages/my/setting/page/subscription_manage_page.dart
  44. 3 3
      lib/pages/my/vip/page/vip_agreement_page.dart
  45. 20 20
      lib/pages/my/vip/page/vip_buy_page.dart
  46. 3 3
      lib/pages/my/vip/page/vip_common_problem_page.dart
  47. 5 5
      lib/pages/today/continue_practice/page/continue_practice_page.dart
  48. 13 13
      lib/pages/today/favorite/page/favorite_page.dart
  49. 3 3
      lib/pages/today/favorite/page/favorite_sentence_page.dart
  50. 3 3
      lib/pages/today/main/controller/home_ctrl.dart
  51. 4 4
      lib/pages/today/main/page/sentence_list_page.dart
  52. 2 2
      lib/pages/today/mood_record/controller/mood_choose_ctrl.dart
  53. 13 13
      lib/pages/today/mood_record/controller/mood_reason_ctrl.dart
  54. 6 6
      lib/pages/today/mood_record/controller/mood_text_ctrl.dart
  55. 13 13
      lib/pages/today/mood_record/controller/mood_type_ctrl.dart
  56. 2 5
      lib/pages/today/mood_record/page/mood_reason_page.dart
  57. 3 3
      lib/pages/today/mood_record/page/mood_text_page.dart
  58. 2 5
      lib/pages/today/mood_record/page/mood_type_page.dart
  59. 3 3
      lib/pages/today/practice/controller/assess_report_ctrl.dart
  60. 3 3
      lib/pages/today/practice/page/assess_report_page.dart
  61. 3 3
      lib/pages/today/practice/page/lesson_catalog_page.dart
  62. 21 20
      lib/pages/today/practice/page/practice_detail_page.dart
  63. 4 4
      lib/pages/today/practice/page/segment_finish_page.dart
  64. 3 3
      lib/pages/today/practice/view/ai_respond_dialog.dart
  65. 13 13
      lib/pages/today/practice_assess/controller/exam_ctrl.dart
  66. 2 2
      lib/pages/today/practice_assess/view/essay_view.dart
  67. 1 1
      lib/pages/today/pwd_lock/page/pwd_lock_page.dart
  68. 12 1
      lib/utils/app_event.dart
  69. 101 0
      lib/utils/app_loading.dart
  70. 3 3
      lib/utils/hex_color.dart
  71. 7 7
      lib/utils/save_image_to_library.dart
  72. 34 34
      lib/utils/toast_utils.dart
  73. 0 6
      macos/Flutter/GeneratedPluginRegistrant.swift
  74. 0 48
      pubspec.lock
  75. 2 2
      pubspec.yaml

+ 1 - 1
ios/Podfile.lock

@@ -296,4 +296,4 @@ SPEC CHECKSUMS:
 
 PODFILE CHECKSUM: bb74a092ea5820685a9c53544f4f0a00caa448bb
 
-COCOAPODS: 1.16.2
+COCOAPODS: 1.14.3

+ 1 - 1
lib/common/AC.dart

@@ -1,7 +1,7 @@
 
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
-import 'package:macos_ui/macos_ui.dart';
+// import 'package:macos_ui/macos_ui.dart';
 
 import '../gen_a/A.dart';
 import '../utils/hex_color.dart';

+ 26 - 27
lib/main.dart

@@ -1,18 +1,19 @@
 
 import 'dart:async';
 import 'dart:io';
+import 'dart:ui';
 
 import 'package:app_links/app_links.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_localizations/flutter_localizations.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/guide_page.dart';
 import 'package:logger/logger.dart';
-import 'package:macos_ui/macos_ui.dart';
+// import 'package:macos_ui/macos_ui.dart';
 import 'package:home_widget/home_widget.dart';
 import 'package:iquokka/constant/screen_constant.dart';
 import 'package:iquokka/module/home_widget_service.dart';
@@ -83,11 +84,11 @@ void main() async {
       Logger().d("===================== app进入前台 =====================");
       AppEvent.getInstance()?.fire(AppEnterForegroundEvent());
       if (AppService().getThemeMode() == 0) { //跟随系统
-        if (HexColor.isDarkMode != MediaQuery.of(Get.context!).platformBrightness.isDark) { //系统模式改变
+        if (HexColor.isDarkMode != (PlatformDispatcher.instance.platformBrightness==Brightness.dark)) { //系统模式改变
           HexColor.reload();
           AC.reload();
           Get.forceAppUpdate();
-          ToastUtil.settingEasyLoading();
+          // ToastUtil.settingEasyLoading();
         }
       }
     }
@@ -270,7 +271,7 @@ class _MyAppState extends State<MyApp> {
                 translations: LanguagePack(),
                 initialBinding: MainBinding(),
                 navigatorObservers: [GetObserver()],
-                themeMode: AppService().getThemeMode()==1?ThemeMode.light:AppService().getThemeMode()==2?ThemeMode.dark:MediaQuery.of(context).platformBrightness.isDark?ThemeMode.dark:ThemeMode.light,
+                themeMode: AppService().getThemeMode()==1?ThemeMode.light:AppService().getThemeMode()==2?ThemeMode.dark:(PlatformDispatcher.instance.platformBrightness==Brightness.dark)?ThemeMode.dark:ThemeMode.light,
                 theme: ThemeData(
                   brightness: Brightness.light,
                   splashColor: Colors.transparent,
@@ -307,28 +308,26 @@ class _MyAppState extends State<MyApp> {
                 ),
                 defaultTransition: Transition.cupertino,
                 home: _getRootWidget(),
-                builder: EasyLoading.init(
-                    builder: (context, child) {
-                      return MediaQuery(
-                          data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), //设置字体不随系统设置的变化
-                          child: Scaffold(
-                            body: GestureDetector(
-                              child: child,
-                              onTap: () {
-                                FocusScopeNode currentFocus = FocusScope.of(context);
-                                if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) {
-                                  //SystemChannels.textInput.invokeMethod("TextInput.hide"); //隐藏时不会失去焦点
-                                  FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘并失去焦点
-                                  AppEvent.getInstance()?.fire(HideKeyboardEvent());
-                                  // FocusScope.of(context).unfocus();
-                                  // AppEvent.getInstance()?.fire(HideKeyboardEvent());
-                                }
-                              },
-                            ),
-                          )
-                      );
-                    }
-                ),
+                builder: (context, child) {
+                  return MediaQuery(
+                      data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), //设置字体不随系统设置的变化
+                      child: Scaffold(
+                        body: GestureDetector(
+                          child: child,
+                          onTap: () {
+                            FocusScopeNode currentFocus = FocusScope.of(context);
+                            if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) {
+                              //SystemChannels.textInput.invokeMethod("TextInput.hide"); //隐藏时不会失去焦点
+                              FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘并失去焦点
+                              AppEvent.getInstance()?.fire(HideKeyboardEvent());
+                              // FocusScope.of(context).unfocus();
+                              // AppEvent.getInstance()?.fire(HideKeyboardEvent());
+                            }
+                          },
+                        ),
+                      )
+                  );
+                },
                 localizationsDelegates: const [
                   //S.delegate,
                   GlobalMaterialLocalizations.delegate,//是Flutter的一个本地化委托,用于提供Material组件库的本地化支持

+ 5 - 5
lib/module/user_service.dart

@@ -1,5 +1,5 @@
 
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:get/route_manager.dart';
 import 'package:iquokka/module/home_widget_service.dart';
@@ -36,10 +36,10 @@ class UserService {
   }
 
   loginByWx(String code) {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.post<UserModel>("user/loginByWx",
         queryParameters: {"code": code}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         ToastUtil.showMsg("登录成功");
         AppService().setPwdLock("");
@@ -56,7 +56,7 @@ class UserService {
   }
 
   loginByPhone(String phone, String captcha, String areaCode) {
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["phone"] = phone;
     params["captcha"] = captcha;
@@ -64,7 +64,7 @@ class UserService {
 
     HttpUtils.post<UserModel>("user/loginByPhone",
         queryParameters: params).then((ret) async {
-          EasyLoading.dismiss();
+          AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         ToastUtil.showMsg("登录成功");
         AppService().setPwdLock("");

+ 2 - 2
lib/net/http_utils.dart

@@ -2,7 +2,7 @@ import 'dart:convert';
 import 'dart:io';
 
 import 'package:dio/dio.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:iquokka/module/user_service.dart';
 import 'package:iquokka/net/dio_manager.dart';
 import 'package:iquokka/net/result.dart';
@@ -119,7 +119,7 @@ class HttpUtils {
 
   /// 统一处理异常-返回错误信息
   static String _handleException(ex) {
-    EasyLoading.dismiss();
+    AppLoading.dismiss();
     if (ex is DioError) {
       switch (ex.type) {
         case DioErrorType.connectTimeout:

+ 5 - 5
lib/pages/explore/main/controller/discover_ctrl.dart

@@ -4,7 +4,7 @@ import 'dart:async';
 
 import 'package:carousel_slider/carousel_controller.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/explore/main/model/banner_model.dart';
 import 'package:iquokka/pages/explore/main/model/discover_model.dart';
@@ -71,9 +71,9 @@ class DiscoverCtrl extends GetxController {
 
   // 请求今日推荐
   void requestRecommend() {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<DiscoverModel>>(HttpUrl.discover_recommend_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       isRecommedRequestComplete = true;
       if (ret.isSuccess()) {
         dataList = ret.data??[];
@@ -86,9 +86,9 @@ class DiscoverCtrl extends GetxController {
   }
 
   void requestBanner() {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<BannerModel>>(HttpUrl.discover_banner_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         bannerList = ret.data??[];
       }

+ 3 - 3
lib/pages/explore/main/page/banner_web_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:webview_flutter/webview_flutter.dart';
 
 import '../../../../utils/base_app_bar.dart';
@@ -37,10 +37,10 @@ class _BannerWebState extends State<BannerWebPage>
             // Update loading bar.
           },
           onPageStarted: (String url) {
-            EasyLoading.show();
+            AppLoading.show();
           },
           onPageFinished: (String url) {
-            EasyLoading.dismiss();
+            AppLoading.dismiss();
           },
           onWebResourceError: (WebResourceError error) {},
           onNavigationRequest: (NavigationRequest request) {

+ 5 - 5
lib/pages/footprint/blank_journal/controller/blank_journal_ctrl.dart

@@ -3,7 +3,7 @@ import 'dart:io';
 
 import 'package:dio/dio.dart';
 import 'package:flutter/cupertino.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_timezone/flutter_timezone.dart';
 import 'package:get/get.dart';
@@ -173,7 +173,7 @@ class BlankJournalCtrl extends GetxController with GetSingleTickerProviderStateM
 
   void submitImage() {
 
-    EasyLoading.show();
+    AppLoading.show();
     if (isSubmiting) {
       return;
     }
@@ -210,8 +210,8 @@ class BlankJournalCtrl extends GetxController with GetSingleTickerProviderStateM
           });
         }
         else{
-          EasyLoading.dismiss();
-          EasyLoading.showInfo("upload/imgMood请求失败");
+          AppLoading.dismiss();
+          ToastUtil.showMsg("upload/imgMood请求失败");
         }
       });
     }
@@ -308,7 +308,7 @@ class BlankJournalCtrl extends GetxController with GetSingleTickerProviderStateM
         data: params,
         options: Options(sendTimeout: 1000, receiveTimeout: 1000)
     ).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         if (!isRawFocus) {
           titleFocusNode.dispose();

+ 3 - 3
lib/pages/footprint/blank_journal/page/blank_journal_page.dart

@@ -6,7 +6,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_image_compress/flutter_image_compress.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
@@ -679,7 +679,7 @@ class BlankJournalPage extends GetView<BlankJournalCtrl> {
     );
 
     if ((imageList??[]).isNotEmpty) {
-      EasyLoading.show();
+      AppLoading.show();
       for (AssetEntity assetEntity in imageList??[]) {
         // String fileName = OssUtils.getUUid();
         // controller.imageList.add(
@@ -696,7 +696,7 @@ class BlankJournalPage extends GetView<BlankJournalCtrl> {
         controller.imageList.add(imageModel);
       }
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
 
       controller.update(["text", "photoButton"]);
       // controller.focusNode.unfocus();

+ 11 - 11
lib/pages/footprint/blank_journal/page/journal_detail_page.dart

@@ -7,7 +7,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/app_service.dart';
@@ -126,12 +126,12 @@ class _JournalDetailState extends State<JournalDetailPage>
   //请求笔记详情
   void _requestJourneyDetail() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["journalId"] = widget.journalId;
 
     HttpUtils.get<JournalDetailModel>(HttpUrl.blank_journal_detail_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _detailModel = ret.data!;
         _detailModel.recordTime = (_detailModel.recordTime??"").contains("-")?_detailModel.recordTime:TimeUtil.getBeijingTimeWithTimeStamp(_detailModel.recordTime??"", "yyyy-MM-dd HH:mm");
@@ -163,13 +163,13 @@ class _JournalDetailState extends State<JournalDetailPage>
   // 已经生成练习ai响应
   void _requestGeneratedAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["recordId"] = widget.journalId;
     params["type"] = 2;
 
     HttpUtils.get<AiRespondModel>(HttpUrl.ai_respond_get_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _aiRespondModel = ret.data!;
         _isShowAiFeedback = true;
@@ -268,12 +268,12 @@ class _JournalDetailState extends State<JournalDetailPage>
   // 隐藏ai响应
   void _submitHideAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_hide_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -283,12 +283,12 @@ class _JournalDetailState extends State<JournalDetailPage>
   // 展示ai响应
   void _submitShowAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_show_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -298,12 +298,12 @@ class _JournalDetailState extends State<JournalDetailPage>
   // 删除ai响应
   void _submitDeleteAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_delete_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _aiRespondModel = AiRespondModel();
         setState(() {});

+ 1 - 1
lib/pages/main_ctrl.dart

@@ -85,7 +85,7 @@ class MainCtrl extends GetxController {
   void onInit() {
     super.onInit();
 
-    ToastUtil.settingEasyLoading();
+    // ToastUtil.settingEasyLoading();
 
    initUmeng();
     //initUmengPush();

+ 3 - 3
lib/pages/my/badge/page/badge_all_page.dart

@@ -1,7 +1,7 @@
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:iquokka/pages/my/badge/model/badge_detail_model.dart';
 import 'package:iquokka/pages/my/badge/model/badge_model.dart';
@@ -34,9 +34,9 @@ class _BadgeAllState extends State<BadgeAllPage>
   }
 
   void requestAllBadgeList() {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<BadgeModel>>(HttpUrl.badge_list_all_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _badgeList = ret.data??[];
         setState(() {});

+ 2 - 2
lib/pages/my/badge/page/badge_detail_page.dart

@@ -49,12 +49,12 @@ class _BadgeDetailState extends State<BadgeDetailPage>
   }
 
   void requestBadgeDetail() {
-   // EasyLoading.show();
+   // AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["badgeId"] = widget.badgeId;
 
     HttpUtils.get<BadgeDetailModel>(HttpUrl.badge_detail_URL, queryParameters: params).then((ret) async {
-     // EasyLoading.dismiss();
+     // AppLoading.dismiss();
       if (ret.isSuccess()) {
         _detailModel = ret.data??BadgeDetailModel();
         setState(() {});

+ 3 - 3
lib/pages/my/badge/page/badge_my_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 
@@ -32,9 +32,9 @@ class _BadgeMyState extends State<BadgeMyPage>
   }
 
   void requestMyBadgeList() {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<BadgeDetailModel>>(HttpUrl.badge_list_my_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _badgeList = ret.data??[];
         setState(() {});

+ 5 - 5
lib/pages/my/lately_record/page/lately_record_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/lately_record/view/lately_record_cell.dart';
 import 'package:iquokka/utils/time_util.dart';
@@ -85,7 +85,7 @@ class _LatelyRecordState extends State<LatelyRecordPage>
   void _requestHistoryPracticeList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -94,7 +94,7 @@ class _LatelyRecordState extends State<LatelyRecordPage>
 
     HttpUtils.get<FavoriteModel>(HttpUrl.practice_history_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         for (FavoriteRecords records in list) {
@@ -128,7 +128,7 @@ class _LatelyRecordState extends State<LatelyRecordPage>
   void _requestHistoryAssessList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -137,7 +137,7 @@ class _LatelyRecordState extends State<LatelyRecordPage>
 
     HttpUtils.get<FavoriteModel>(HttpUrl.assess_history_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         for (FavoriteRecords records in list) {

+ 11 - 11
lib/pages/my/lately_record/page/record_detail_page.dart

@@ -10,7 +10,7 @@ import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/lately_record/model/record_detail_model.dart';
@@ -138,12 +138,12 @@ class _RecordDetailState extends State<RecordDetailPage>
   //请求练习记录详情
   void _requestPracticeRecordDetail() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["historyId"] = widget.historyId;
 
     HttpUtils.get<RecordDetailModel>(HttpUrl.practice_history_detail_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _detailModel = ret.data!;
         _detailModel.recordTime = (_detailModel.recordTime??"").contains("-")?_detailModel.recordTime:TimeUtil.getBeijingTimeWithTimeStamp(_detailModel.recordTime??"", "yyyy-MM-dd HH:mm");
@@ -159,13 +159,13 @@ class _RecordDetailState extends State<RecordDetailPage>
   // 已经生成练习ai响应
   void _requestGeneratedAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["recordId"] = _detailModel.submitId;
     params["type"] = 3;
 
     HttpUtils.get<AiRespondModel>(HttpUrl.ai_respond_get_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _aiRespondModel = ret.data!;
         _isShowAiFeedback = true;
@@ -266,12 +266,12 @@ class _RecordDetailState extends State<RecordDetailPage>
   // 隐藏ai响应
   void _submitHideAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_hide_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -281,12 +281,12 @@ class _RecordDetailState extends State<RecordDetailPage>
   // 展示ai响应
   void _submitShowAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_show_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -296,12 +296,12 @@ class _RecordDetailState extends State<RecordDetailPage>
   // 删除ai响应
   void _submitDeleteAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = _aiRespondModel.id;
 
     HttpUtils.post(HttpUrl.ai_respond_delete_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _aiRespondModel = AiRespondModel();
         setState(() {});

+ 1 - 1
lib/pages/my/lately_record/view/practice_record_share_view.dart

@@ -3,7 +3,7 @@ import 'dart:typed_data';
 
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';

+ 3 - 3
lib/pages/my/login/page/login_page.dart

@@ -4,7 +4,7 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
@@ -144,14 +144,14 @@ class _LoginPageState extends State<LoginPage> with SingleTickerProviderStateMix
   //请求app系统配置
   Future<void> _requestAppConfig() async {
 
-    EasyLoading.show();
+    AppLoading.show();
     PackageInfo packageInfo = await PackageInfo.fromPlatform();
     Map<String,dynamic> params = new Map();
     params["platform"] = UniversalPlatform.isIOS?"ios":"android";
     params["version"] = packageInfo.version;
 
     HttpUtils.get<List<AppConfigModel>>(HttpUrl.app_config_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         for (AppConfigModel model in ret.data!) {
           if (model.type == 2) {

+ 3 - 3
lib/pages/my/login/page/privacy_policy_page.dart

@@ -1,5 +1,5 @@
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_html/flutter_html.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/utils/hex_color.dart';
@@ -27,9 +27,9 @@ class _PrivacyPolicyPageState extends State<PrivacyPolicyPage> {
 
   void _requestPrivacyPolicyData() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<String>(HttpUrl.privacy_policy_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _privacyPolicy = ret.data??"";
         setState(() {});

+ 3 - 3
lib/pages/my/login/page/user_agreement_page.dart

@@ -1,5 +1,5 @@
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_html/flutter_html.dart';
 import 'package:get/get.dart';
 
@@ -27,9 +27,9 @@ class _UserAgreementPageState extends State<UserAgreementPage> {
 
   void _requestPrivacyPolicyData() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<String>(HttpUrl.user_agreement_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _userAgreement = ret.data??"";
         setState(() {});

+ 4 - 4
lib/pages/my/main/controller/mine_ctrl.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/home_widget_service.dart';
@@ -272,14 +272,14 @@ class MineCtrl extends GetxController with GetTickerProviderStateMixin{
   //请求心情统计
   Future _requestMoodStat() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["start"] = TimeUtil.getNowDate("yyyy-MM")+"-01";
     params["end"] = TimeUtil.getNowDate("yyyy-MM")+"-"+TimeUtil.getDaysInMonth(TimeUtil.getNowDate("yyyy"), TimeUtil.getNowDate("MM")).toString();
     params["isAll"] = false;
 
     return HttpUtils.get<MoodStatModel>(HttpUrl.mood_stat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         isRequestSuccess = true;
         moodStatModel = ret.data!;
@@ -302,7 +302,7 @@ class MineCtrl extends GetxController with GetTickerProviderStateMixin{
     params["isAll"] = false;
 
     return HttpUtils.get<MoodStatModel>(HttpUrl.mood_stat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
           HomeWidgetService().updateMoodRecordWeekWidget(getWeekDayStatList(ret.data!.dayStat, params["start"], params["end"]));
       }

+ 7 - 7
lib/pages/my/main/controller/personal_info_ctrl.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:image_picker/image_picker.dart';
 import 'package:sp_util/sp_util.dart';
@@ -86,12 +86,12 @@ class PersonalInfoCtrl extends GetxController {
 
   void _submitUpdateUserInfo(Map<String,dynamic> params) {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.post(HttpUrl.user_info_update_URL, data: params).then((ret) {
       if (ret.isSuccess()) {
         _requestUserInfo();
       } else {
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         ToastUtil.showMsg(ret.msg??"");
       }
     });
@@ -99,7 +99,7 @@ class PersonalInfoCtrl extends GetxController {
 
   void _requestUserInfo() {
     HttpUtils.get<UserModel>(HttpUrl.user_info_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         UserModel user = ret.data!;
         user.token = UserService().getToken();
@@ -186,19 +186,19 @@ class PersonalInfoCtrl extends GetxController {
 
   void submitBindNewPhone() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["phone"] = newPhoneTextCtrl.text;
     params["captcha"] = captchaTextCtrl.text;
     params["areaCode"] = areaCode.replaceAll("+", "");
 
     HttpUtils.post(HttpUrl.bind_new_phone_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         Get.back();
         _requestUserInfo();
       } else {
-        EasyLoading.showError(ret.msg ?? "");
+        ToastUtil.showMsg(ret.msg ?? "");
       }
     });
   }

+ 5 - 5
lib/pages/my/main/page/avatar_big_page.dart

@@ -4,7 +4,7 @@ import 'dart:io';
 // import 'package:adaptive_dialog/adaptive_dialog.dart';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:get/get_core/src/get_main.dart';
@@ -217,21 +217,21 @@ class _AvatarBigState extends State<AvatarBigPage> {
   }
 
   void _submitHeaderPic() {
-    EasyLoading.show();
+    AppLoading.show();
     OssUtils.uploadImage(entity: aliOssModel!, filePath: avatarPath)
         .then((value) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       _submitUploadHeaderPic(value??"");
     });
   }
 
   void _submitUploadHeaderPic(String picUrl) {
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["avatar"] = picUrl;
 
     HttpUtils.post(HttpUrl.user_info_update_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         ToastUtil.showMsg("上传成功".tr);
         AppEvent.getInstance()?.fire(AvatarUpdateFinishEvent());

+ 4 - 4
lib/pages/my/main/page/mine_list_page.dart

@@ -4,7 +4,7 @@ import 'dart:async';
 import 'package:dio/dio.dart';
 import 'package:fl_chart/fl_chart.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/main/model/mood_analysis_model.dart';
@@ -303,7 +303,7 @@ class _MineListState extends State<MineListPage> with AutomaticKeepAliveClientMi
   //请求心情统计
   void _requestMoodStat() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["start"] = _beginTime;
     params["end"] = _endTime;
@@ -319,7 +319,7 @@ class _MineListState extends State<MineListPage> with AutomaticKeepAliveClientMi
     }
 
     HttpUtils.get<MoodStatModel>(HttpUrl.mood_stat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _moodStatModel = ret.data!;
         if (widget.type == 1) {
@@ -1721,7 +1721,7 @@ class _MineListState extends State<MineListPage> with AutomaticKeepAliveClientMi
 
   Widget _getMoodTypeReasonListWidget() {
 
-    // EasyLoading.show();
+    // AppLoading.show();
 
     return SliverList(
       delegate: SliverChildBuilderDelegate((context, index) {

+ 2 - 2
lib/pages/my/main/page/personal_info_page.dart

@@ -5,7 +5,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/main/controller/personal_info_ctrl.dart';
@@ -203,7 +203,7 @@ class PersonalInfoPage extends GetView<PersonalInfoCtrl> {
                               onTap: () {
                                 if (_.isSave) {
                                   if (_.nicknameLength > 24) {
-                                    EasyLoading.showError("昵称最大限制12个中文字".tr);
+                                    ToastUtil.showMsg("昵称最大限制12个中文字".tr);
                                   }
                                   else {
                                     Get.back();

+ 5 - 5
lib/pages/my/mood_analysis/page/mood_analysis_page.dart

@@ -5,7 +5,7 @@ import 'dart:ui';
 
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
@@ -159,14 +159,14 @@ class _MoodAnalysisState extends State<MoodAnalysisPage>
   //请求心情统计
   void _requestMoodStat() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["start"] = _beginTime;
     params["end"] = _endTime;
     params["isAll"] = true;
 
     HttpUtils.get<MoodStatModel>(HttpUrl.mood_stat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _moodStatModel = ret.data!;
 
@@ -607,7 +607,7 @@ class _MoodAnalysisState extends State<MoodAnalysisPage>
               isSaveImage: true,
               platformClick: (type) async {
                 Get.back();
-                EasyLoading.show();
+                AppLoading.show();
                 Uint8List? image;
                 if (_isShareFull) {
                   Uint8List? footerImage = await WidgetToImageConverter.captureWidgetToImage(_fullFooterGlobaKey);
@@ -623,7 +623,7 @@ class _MoodAnalysisState extends State<MoodAnalysisPage>
                   image = await WidgetToImageConverter.captureWidgetToImage(_shortGlobaKey);
                 }
                 //Uint8List? image = await WidgetToImageConverter.captureWidgetToImage(_shortGlobaKey);
-                EasyLoading.dismiss();
+                AppLoading.dismiss();
                 if (type == 1) { //微信
                   _wechatShare(WeChatScene.session, image!);
                 }

+ 3 - 3
lib/pages/my/mood_analysis/page/mood_record_history_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/mood_analysis/model/mood_record_history_model.dart';
@@ -89,7 +89,7 @@ class _MoodRecordHistoryState extends State<MoodRecordHistoryPage>
   void _requestMoodRecordHistoryList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -99,7 +99,7 @@ class _MoodRecordHistoryState extends State<MoodRecordHistoryPage>
 
     HttpUtils.get<List<MoodRecordHistoryModel>>(HttpUrl.mood_record_history_list_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<MoodRecordHistoryModel> list = ret.data!;
 

+ 3 - 3
lib/pages/my/mood_analysis/page/mood_record_list_page.dart

@@ -3,7 +3,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:iquokka/module/app_service.dart';
 import 'package:iquokka/pages/my/mood_analysis/view/mood_record_list_cell.dart';
@@ -115,7 +115,7 @@ class _MoodRecordListState extends State<MoodRecordListPage>
   void _requestMoodRecordList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -130,7 +130,7 @@ class _MoodRecordListState extends State<MoodRecordListPage>
 
     HttpUtils.get<MoodModel>(HttpUrl.mood_record_list_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         MoodModel moodModel = ret.data!;
         if (_page == 1) {

+ 1 - 1
lib/pages/my/mood_analysis/view/calendar_view.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/component/mood_ring.dart';

+ 9 - 9
lib/pages/my/mood_analysis/view/mood_record_list_cell.dart

@@ -7,7 +7,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/user_service.dart';
@@ -90,13 +90,13 @@ class _MoodRecordListCellState extends State<MoodRecordListCell>
   // 已经生成练习ai响应
   void _requestGeneratedAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["recordId"] = widget.moodRecords.id;
     params["type"] = 1;
 
     HttpUtils.get<AiRespondModel>(HttpUrl.ai_respond_get_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         widget.moodRecords.aiResponse = ret.data!;
         _isShowAiFeedback = true;
@@ -197,12 +197,12 @@ class _MoodRecordListCellState extends State<MoodRecordListCell>
   // 隐藏ai响应
   void _submitHideAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = widget.moodRecords.aiResponse.id;
 
     HttpUtils.post(HttpUrl.ai_respond_hide_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -212,12 +212,12 @@ class _MoodRecordListCellState extends State<MoodRecordListCell>
   // 展示ai响应
   void _submitShowAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = widget.moodRecords.aiResponse.id;
 
     HttpUtils.post(HttpUrl.ai_respond_show_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestGeneratedAiRespond();
       }
@@ -227,12 +227,12 @@ class _MoodRecordListCellState extends State<MoodRecordListCell>
   // 删除ai响应
   void _submitDeleteAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["responseId"] = widget.moodRecords.aiResponse.id;
 
     HttpUtils.post(HttpUrl.ai_respond_delete_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         widget.moodRecords.aiResponse = AiRespondModel();
         setState(() {});

+ 3 - 3
lib/pages/my/reason_mood/controller/reason_mood_ctrl.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/footprint/main/model/footprint_model.dart';
@@ -139,7 +139,7 @@ class ReasonMoodCtrl extends GetxController {
   void requestMoodRecordList() {
 
     if (isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
     Map<String,dynamic> params = new Map();
     params["page"] = page;
@@ -149,7 +149,7 @@ class ReasonMoodCtrl extends GetxController {
     params["reasonId"] = reasonId;
 
     HttpUtils.get<FootprintModel>(HttpUrl.mood_record_list_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       isFirstRequest = false;
       if (ret.isSuccess() && ret.data != null) {
         FootprintModel footprintModel = ret.data!;

+ 5 - 5
lib/pages/my/setting/page/ai_role_page.dart

@@ -1,7 +1,7 @@
 
 import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/setting/model/ai_role_model.dart';
@@ -34,12 +34,12 @@ class _AiRoleState extends State<AiRolePage> {
   // 请求AI角色
   void _requestAiRoleList() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["page"] = 1;
     params["size"] = 10;
     HttpUtils.get<AiRoleModel>(HttpUrl.ai_role_list_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _roleList = ret.data!.records??[];
         setState(() {});
@@ -49,12 +49,12 @@ class _AiRoleState extends State<AiRolePage> {
 
   void _submitAiRole(int roleId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["roleId"] = roleId;
 
     HttpUtils.post(HttpUrl.ai_role_submit_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestAiRoleList();
       }

+ 2 - 2
lib/pages/my/setting/page/ai_settting_page.dart

@@ -104,7 +104,7 @@ class _AiSettingState extends State<AiSettingPage> {
 
   // void _submitUpdateNoticeSetting(NoticeSettingPushList pushModel, int categoryId) {
   //
-  //   EasyLoading.show();
+  //   AppLoading.show();
   //   Map<String,dynamic> params = new Map();
   //   params["categoryId"] = categoryId;
   //   params["opened"] = (pushModel.opened??false)?1:0;
@@ -113,7 +113,7 @@ class _AiSettingState extends State<AiSettingPage> {
   //   params["time"] = pushModel.pushTime;
   //
   //   HttpUtils.post(HttpUrl.notice_setting_update_URL, data: params).then((ret) {
-  //     EasyLoading.dismiss();
+  //     AppLoading.dismiss();
   //     if (ret.isSuccess()) {
   //       _requestItemsListData();
   //       SettingPushTag().requestUserTag();

+ 3 - 3
lib/pages/my/setting/page/contact_us_page.dart

@@ -5,7 +5,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/setting/model/contact_us_model.dart';
@@ -41,13 +41,13 @@ class _ContactUsState extends State<ContactUsPage> with SingleTickerProviderStat
 
   void _requestContactUsInfo() {
 
-    EasyLoading.show();
+    AppLoading.show();
 
     Map<String,dynamic> params = new Map();
 
     HttpUtils.get<ContactUsModel>(HttpUrl.contact_us_info_URL, queryParameters: params).then((ret) {
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _contactUsModel = ret.data!;
 

+ 1 - 1
lib/pages/my/setting/page/dark_mode_page.dart

@@ -83,7 +83,7 @@ class _DarkModePageState extends State<DarkModePage> {
                   }
                   setState(() {});
                   Get.forceAppUpdate(); //刷新整个app
-                  ToastUtil.settingEasyLoading(); //刷新EasyLoading的设置
+                  // ToastUtil.settingEasyLoading(); //刷新EasyLoading的设置
                 },
               );
             }

+ 3 - 3
lib/pages/my/setting/page/feedback_page.dart

@@ -2,7 +2,7 @@
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:package_info_plus/package_info_plus.dart';
@@ -43,7 +43,7 @@ class _FeedbackPageState extends State<FeedbackPage> {
 
   Future<void> _submitFeedback() async {
 
-    EasyLoading.show();
+    AppLoading.show();
 
     String deviceStr = "";
     PackageInfo packageInfo = await PackageInfo.fromPlatform();
@@ -71,7 +71,7 @@ class _FeedbackPageState extends State<FeedbackPage> {
     }
 
     HttpUtils.post(HttpUrl.submit_feedback_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         ToastUtil.showMsg("反馈成功".tr);
         Get.back();

+ 3 - 3
lib/pages/my/setting/page/newcome_gift_page.dart

@@ -1,7 +1,7 @@
 
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/setting/model/invite_code_model.dart';
@@ -37,13 +37,13 @@ class _NewcomeGiftState extends State<NewcomeGiftPage> {
   //获取用户邀请码
   void _requestUserInviteCode() {
 
-    EasyLoading.show();
+    AppLoading.show();
 
     Map<String,dynamic> params = new Map();
 
     HttpUtils.post<List<InviteCodeModel>>(HttpUrl.code_user_URL, queryParameters: params).then((ret) {
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _codeList = ret.data!;
         setState(() {});

+ 5 - 5
lib/pages/my/setting/page/notice_setting_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:permission_handler/permission_handler.dart';
@@ -37,10 +37,10 @@ class _NoticeSettingState extends State<NoticeSettingPage> {
 
   void _requestItemsListData() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     HttpUtils.get<List<NoticeSettingModel>>(HttpUrl.notice_setting_list_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _noticeList = ret.data!;
         setState(() {});
@@ -173,7 +173,7 @@ class _NoticeSettingState extends State<NoticeSettingPage> {
 
   void _submitUpdateNoticeSetting(NoticeSettingPushList pushModel, int categoryId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["categoryId"] = categoryId;
     params["opened"] = (pushModel.opened??false)?1:0;
@@ -182,7 +182,7 @@ class _NoticeSettingState extends State<NoticeSettingPage> {
     params["time"] = pushModel.pushTime;
 
     HttpUtils.post(HttpUrl.notice_setting_update_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestItemsListData();
         SettingPushTag().requestUserTag();

+ 3 - 3
lib/pages/my/setting/page/order_manage_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/setting/view/order_manage_cell.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
@@ -47,7 +47,7 @@ class _OrderManageState extends State<OrderManagePage> {
   void _requestOrderListData() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -56,7 +56,7 @@ class _OrderManageState extends State<OrderManagePage> {
 
     HttpUtils.post<FavoriteModel>(HttpUrl.order_list_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {

+ 1 - 1
lib/pages/my/setting/page/privacy_setting_page.dart

@@ -2,7 +2,7 @@
 
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/app_service.dart';

+ 3 - 3
lib/pages/my/setting/page/selfhelp_resource_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/my/setting/view/selfhelp_resource_cell.dart';
@@ -33,12 +33,12 @@ class _SelfhelpResourceState extends State<SelfhelpResourcePage> {
   // 请求心理自助资源列表
   void _requestSelfhelpResourceList() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["page"] = 1;
     params["size"] = 50;
     HttpUtils.get<SelfhelpResourceModel>(HttpUrl.selfhelp_resource_list_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _selfhelpList = ret.data!.records??[];
         setState(() {});

+ 6 - 6
lib/pages/my/setting/page/setting_page.dart

@@ -2,7 +2,7 @@
 // import 'package:adaptive_dialog/adaptive_dialog.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/app_service.dart';
@@ -116,15 +116,15 @@ class _SettingState extends State<SettingPage>
   // 数据导出
   Future<void> requestDataExport() async {
 
-    EasyLoading.show();
+    AppLoading.show();
     final filePath = await HttpUtils.downloadFile(
       url: "footprint/export",
       fileName: "心境奇旅${TimeUtil.getNowDate("yyyyMMdd")}.md",
       onProgress: (progress) {
-        EasyLoading.showProgress(progress, status: '下载中 ${(progress * 100).toStringAsFixed(0)}%');
+        //EasyLoading.showProgress(progress, status: '下载中 ${(progress * 100).toStringAsFixed(0)}%');
       },
     );
-    EasyLoading.dismiss();
+    AppLoading.dismiss();
 
     final box = Get.context!.findRenderObject() as RenderBox?;
     await Share.shareXFiles(
@@ -395,9 +395,9 @@ class _SettingState extends State<SettingPage>
   //提交注销账号
   void _submitLogoffAccount() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.post(HttpUrl.user_logoff_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         UserService().logout();
         Get.back();

+ 6 - 6
lib/pages/my/setting/page/subscription_manage_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:get/route_manager.dart';
@@ -95,18 +95,18 @@ class _SubscriptionManageState extends State<SubscriptionManagePage> {
   // 恢复购买
   void _restoreBuy() async {
 
-    EasyLoading.show(status: "正在恢复订阅".tr);
+    AppLoading.show(message: "正在恢复订阅".tr);
     final bool isAvailable = await InAppPurchase.instance.isAvailable();
 
     if (!isAvailable) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("Store unavailable");
       return;
     }
 
     _subscription = InAppPurchase.instance.purchaseStream.listen(
             (List<PurchaseDetails> purchaseDetailsList) {
-          EasyLoading.dismiss();
+          AppLoading.dismiss();
           if (purchaseDetailsList.isEmpty) {
             ToastUtil.showMsg("没有可恢复的订阅".tr);
             //EasyLoading.showToast("没有可恢复的订阅");
@@ -126,11 +126,11 @@ class _SubscriptionManageState extends State<SubscriptionManagePage> {
           //workData(purchaseDetailsList);
           ToastUtil.showMsg("恢复成功".tr);
         }, onDone: () {
-              EasyLoading.dismiss();
+              AppLoading.dismiss();
               _subscription.cancel();
     }, onError: (Object error) {
       // handle error here.
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
     });
 
     await InAppPurchase.instance.restorePurchases();

+ 3 - 3
lib/pages/my/vip/page/vip_agreement_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_html/flutter_html.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
@@ -30,9 +30,9 @@ class _VipAgreementState extends State<VipAgreementPage> {
 
   void _requestVipAgreementData() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<String>(HttpUrl.vip_agreement_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _vipAgreement = ret.data??"";
         setState(() {});

+ 20 - 20
lib/pages/my/vip/page/vip_buy_page.dart

@@ -4,7 +4,7 @@ import 'dart:io';
 
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
@@ -14,7 +14,7 @@ import 'package:in_app_purchase_storekit/store_kit_wrappers.dart';
 import 'package:iquokka/pages/my/vip/model/user_comment_model.dart';
 import 'package:iquokka/pages/my/vip/page/vip_common_problem_page.dart';
 import 'package:logger/logger.dart';
-import 'package:macos_ui/macos_ui.dart';
+// import 'package:macos_ui/macos_ui.dart';
 import 'package:iquokka/pages/my/vip/model/cash_code_model.dart';
 import 'package:iquokka/pages/my/vip/model/vip_buy_model.dart';
 import 'package:iquokka/pages/my/vip/page/vip_activated_page.dart';
@@ -143,9 +143,9 @@ class _VipBuyState extends State<VipBuyPage>
 
   void _requestBuyVipPrice() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<VipBuyModel>>(HttpUrl.buy_vip_price_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
          _priceList = ret.data!;
          setState(() {});
@@ -169,7 +169,7 @@ class _VipBuyState extends State<VipBuyPage>
     params["page"] = 1;
     params["size"] = 100;
     HttpUtils.get<UserCommentModel>(HttpUrl.app_user_comment_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _commentList = ret.data!.records??[];
         setState(() {});
@@ -1211,12 +1211,12 @@ class _VipBuyState extends State<VipBuyPage>
       return;
     }
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["type"] = _priceList[_selectedPriceIndex].type;
     params["codeUsageId"] = _priceList[_selectedPriceIndex].channelCodeUsageId;
     HttpUtils.post(HttpUrl.buy_vip_wechat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _wechatPay(ret.data);
       }
@@ -1269,9 +1269,9 @@ class _VipBuyState extends State<VipBuyPage>
   }
 
   void _updateUserInfo(bool isBack) {
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<UserModel>(HttpUrl.user_info_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         UserModel user = ret.data!;
         user.token = UserService().getToken();
@@ -1287,10 +1287,10 @@ class _VipBuyState extends State<VipBuyPage>
   // 苹果订阅
   void _appleSubscription() async{
 
-    EasyLoading.show();
+    AppLoading.show();
     final bool isAvailable = await _inAppPurchase.isAvailable();
     if (!isAvailable) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       return;
     }
 
@@ -1315,7 +1315,7 @@ class _VipBuyState extends State<VipBuyPage>
       kProductIds.add(buyModel.iosPrice??"");
     }
     else {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("暂无产品".tr);
       return;
     }
@@ -1325,13 +1325,13 @@ class _VipBuyState extends State<VipBuyPage>
 
     /// 查询不到说明没注册
     if (productDetailResponse.error != null) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("获取产品信息失败".tr);
       return;
     }
     /// 查询不到商品详情说明没注册
     if (productDetailResponse.productDetails.isEmpty) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("暂无产品".tr);
       return;
     }
@@ -1359,12 +1359,12 @@ class _VipBuyState extends State<VipBuyPage>
       } else if (purchaseDetails.status == PurchaseStatus.canceled) {
         // 取消订单
         _inAppPurchase.completePurchase(purchaseDetails);
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         Logger().d("取消订单...");
       } else {
         if (purchaseDetails.status == PurchaseStatus.error) {
           // 购买出错
-          EasyLoading.dismiss();
+          AppLoading.dismiss();
           ToastUtil.showMsg("购买出错".tr);
           _inAppPurchase.completePurchase(purchaseDetails);
           Logger().d("购买出错...");
@@ -1372,7 +1372,7 @@ class _VipBuyState extends State<VipBuyPage>
         }
         else if (purchaseDetails.status == PurchaseStatus.purchased || purchaseDetails.status == PurchaseStatus.restored) {
           // 购买成功
-          //EasyLoading.dismiss();
+          //AppLoading.dismiss();
           Logger().d("购买成功...");
           Logger().d("productID = "+purchaseDetails.productID+",purchaseID = "+(purchaseDetails.purchaseID??""));
           Logger().d("transactionDate = "+(purchaseDetails.transactionDate??""));
@@ -1398,7 +1398,7 @@ class _VipBuyState extends State<VipBuyPage>
     params["codeUsageId"] = _priceList[_selectedPriceIndex].channelCodeUsageId;
 
     HttpUtils.post(HttpUrl.apple_in_purchase_verify_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _inAppPurchase.completePurchase(purchaseDetails);
         _updateUserInfo(true);
@@ -1644,12 +1644,12 @@ class _VipBuyState extends State<VipBuyPage>
       return;
     }
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["code"] = _codeTextCtrl.text;
 
     HttpUtils.post<CashCodeModel>(HttpUrl.code_submit_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         Get.back();
         CashCodeModel cashCodeModel = ret.data!;

+ 3 - 3
lib/pages/my/vip/page/vip_common_problem_page.dart

@@ -1,6 +1,6 @@
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_html/flutter_html.dart';
 import 'package:get/get.dart';
 
@@ -29,9 +29,9 @@ class _VipCommonProblemState extends State<VipCommonProblemPage> {
 
   void _requestVipCommonProblemData() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<String>(HttpUrl.vip_common_problem_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _vipProblem = ret.data??"";
         setState(() {});

+ 5 - 5
lib/pages/today/continue_practice/page/continue_practice_page.dart

@@ -4,7 +4,7 @@ import 'dart:async';
 
 // import 'package:adaptive_dialog/adaptive_dialog.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/utils/bottom_sheet_dialog.dart';
@@ -80,7 +80,7 @@ class _ContinuePracticeState extends State<ContinuePracticePage>
   void _requestContinuePracticeList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -90,7 +90,7 @@ class _ContinuePracticeState extends State<ContinuePracticePage>
 
     HttpUtils.get<FavoriteModel>(HttpUrl.practice_continue_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {
@@ -117,12 +117,12 @@ class _ContinuePracticeState extends State<ContinuePracticePage>
 
   void _submitDeletePracticeById(int practiceId, int index) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["practiceId"] = practiceId;
 
     HttpUtils.post(HttpUrl.practice_delete_continue_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _continueList.removeAt(index);
         setState(() {});

+ 13 - 13
lib/pages/today/favorite/page/favorite_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/common/empty_data_page.dart';
@@ -110,7 +110,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestFavoritePracticeList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -120,7 +120,7 @@ class _FavoriteState extends State<FavoritePage>
     HttpUtils.get<FavoriteModel>(HttpUrl.practice_favorit_list_URL, queryParameters: params).then((ret) {
       _isLoadingFinish = true;
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {
@@ -149,7 +149,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestFavoriteAssessList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -159,7 +159,7 @@ class _FavoriteState extends State<FavoritePage>
     HttpUtils.get<FavoriteModel>(HttpUrl.assess_favorite_list_URL, queryParameters: params).then((ret) {
       _isLoadingFinish = true;
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {
@@ -191,7 +191,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestHistoryPracticeList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -200,7 +200,7 @@ class _FavoriteState extends State<FavoritePage>
 
     HttpUtils.get<FavoriteModel>(HttpUrl.practice_history_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {
@@ -229,7 +229,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestHistoryAssessList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -238,7 +238,7 @@ class _FavoriteState extends State<FavoritePage>
 
     HttpUtils.get<FavoriteModel>(HttpUrl.assess_history_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<FavoriteRecords> list = ret.data!.records??[];
         if (_page == 1) {
@@ -270,7 +270,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestSearchPracticeList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -283,7 +283,7 @@ class _FavoriteState extends State<FavoritePage>
     HttpUtils.get<FavoriteModel>(HttpUrl.practice_search_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
       _isLoadingFinish = true;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         FavoriteModel model = ret.data!;
         if ((model.current??0) >= (model.pages??0)) {
@@ -319,7 +319,7 @@ class _FavoriteState extends State<FavoritePage>
   void _requestSearchAssessList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -333,7 +333,7 @@ class _FavoriteState extends State<FavoritePage>
       _isFirstRequest = false;
       _isLoadingFinish = true;
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         FavoriteModel model = ret.data!;
         if ((model.current??0) >= (model.pages??0)) {

+ 3 - 3
lib/pages/today/favorite/page/favorite_sentence_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/common/empty_data_page.dart';
 
@@ -66,7 +66,7 @@ class _FavoriteSentenceState extends State<FavoriteSentencePage>
   void _requestSentenceList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -76,7 +76,7 @@ class _FavoriteSentenceState extends State<FavoriteSentencePage>
     HttpUtils.get<List<SentenceModel>>(HttpUrl.everyday_word_favorite_list_URL, queryParameters: params).then((ret) {
       _isLoadingFinish = true;
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<SentenceModel> list = ret.data??[];
         if (_lastId == -1) {

+ 3 - 3
lib/pages/today/main/controller/home_ctrl.dart

@@ -6,7 +6,7 @@ import 'dart:math';
 // import 'package:adaptive_dialog/adaptive_dialog.dart';
 import 'package:carousel_slider/carousel_controller.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/footprint/blank_journal/bindings/blank_journal_binding.dart';
@@ -257,12 +257,12 @@ class HomeCtrl extends GetxController {
 
   void _submitAddContinuePractice(int practiceId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["practiceId"] = practiceId;
 
     HttpUtils.post(HttpUrl.practice_add_continue_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         SpUtil.remove("practice_crash");
         _requestContinuePracticeList();

+ 4 - 4
lib/pages/today/main/page/sentence_list_page.dart

@@ -4,7 +4,7 @@ import 'dart:math';
 
 import 'package:easy_refresh/easy_refresh.dart' as easyRefresh;
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/app_service.dart';
@@ -91,11 +91,11 @@ class _SentenceListState extends State<SentenceListPage>
   // 请求过去7天的数据
   void _requestLastSevenDaysList() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     HttpUtils.get<List<SentenceModel>>(HttpUrl.everyday_word_list_URL, queryParameters: params).then((ret) async {
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         // _sentenceList = (ret.data??[]).reversed.toList();
         _sentenceList = ret.data??[];
@@ -130,7 +130,7 @@ class _SentenceListState extends State<SentenceListPage>
     params["lastId"] = _lastId;
 
     HttpUtils.get<List<SentenceModel>>(HttpUrl.everyday_word_favorite_list_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<SentenceModel> list = ret.data??[];
         if (_lastId == -1) {

+ 2 - 2
lib/pages/today/mood_record/controller/mood_choose_ctrl.dart

@@ -148,9 +148,9 @@ class MoodChooseCtrl extends GetxController {
   // 请求是否可以修改时间
   // void _requestIfRecordHistory() {
   //
-  //   EasyLoading.show();
+  //   AppLoading.show();
   //   HttpUtils.get<bool>(HttpUrl.mood_record_if_history_URL, queryParameters: {}).then((ret) {
-  //     EasyLoading.dismiss();
+  //     AppLoading.dismiss();
   //     if (ret.isSuccess() && ret.data != null) {
   //       isRecordHistory = ret.data!;
   //     } else {

+ 13 - 13
lib/pages/today/mood_record/controller/mood_reason_ctrl.dart

@@ -3,7 +3,7 @@ import 'dart:async';
 
 import 'package:flutter/material.dart';
 import 'package:flutter_draggable_gridview/flutter_draggable_gridview.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/gen_a/A.dart';
 import 'package:iquokka/module/user_service.dart';
@@ -53,10 +53,10 @@ class MoodReasonCtrl extends GetxController {
     userModel = UserService().getUserInfo();
 
     if (chooseCtrl.reasonList.isEmpty) {
-      EasyLoading.show();
+      AppLoading.show();
       _requestReasonEvent =
           AppEvent.getInstance()?.on<MoodReasonRequestSucceedEvent>().listen((event) {
-            EasyLoading.dismiss();
+            AppLoading.dismiss();
             _initData();
           });
     }
@@ -112,9 +112,9 @@ class MoodReasonCtrl extends GetxController {
 
   void _requestMoodReason(int reloadType) {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.get<List<MoodReasonModel>>(HttpUrl.mood_reason_list_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
 
         List<MoodReasonModel> list = ret.data??[];
@@ -220,12 +220,12 @@ class MoodReasonCtrl extends GetxController {
 
   void submitDeleteReason(int reasonId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["reasonId"] = reasonId;
 
     HttpUtils.post(HttpUrl.mood_reason_delete_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestMoodReason(3);
       } else {
@@ -236,7 +236,7 @@ class MoodReasonCtrl extends GetxController {
 
   void submitReasonSort() {
 
-    EasyLoading.show();
+    AppLoading.show();
     List<Map<String,dynamic>> list = [];
 
     for(int i = 0; i < editReasonList.length; i++) {
@@ -248,7 +248,7 @@ class MoodReasonCtrl extends GetxController {
     }
 
     HttpUtils.post(HttpUrl.mood_reason_sort_URL, data: {"list": list}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         reasonTextCtrl.text = "";
         for (CustomReasonModel model in customReasonList) {
@@ -317,7 +317,7 @@ class MoodReasonCtrl extends GetxController {
 
   void submitCustomMoodReason() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["name"] = reasonTextCtrl.text;
     params["desc"] = "";
@@ -330,7 +330,7 @@ class MoodReasonCtrl extends GetxController {
     }
 
     HttpUtils.post(HttpUrl.mood_reason_add_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         reasonTextCtrl.text = "";
         for (CustomReasonModel model in customReasonList) {
@@ -345,9 +345,9 @@ class MoodReasonCtrl extends GetxController {
 
   void submitReasonRestoreDefaultSort() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.post(HttpUrl.mood_reason_restore_default_sort_URL, data: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         isDefaultSort = true;
         _requestMoodReason(3);

+ 6 - 6
lib/pages/today/mood_record/controller/mood_text_ctrl.dart

@@ -8,7 +8,7 @@ import 'dart:typed_data';
 
 import 'package:dio/dio.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_timezone/flutter_timezone.dart';
 import 'package:get/get.dart';
@@ -102,7 +102,7 @@ class MoodTextCtrl extends GetxController with GetSingleTickerProviderStateMixin
   }
 
   void skipHandle() {
-    EasyLoading.show();
+    AppLoading.show();
     if (isSubmiting) {
       return;
     }
@@ -118,7 +118,7 @@ class MoodTextCtrl extends GetxController with GetSingleTickerProviderStateMixin
 
   void submitImage() {
 
-    EasyLoading.show();
+    AppLoading.show();
     if (isSubmiting) {
       return;
     }
@@ -150,8 +150,8 @@ class MoodTextCtrl extends GetxController with GetSingleTickerProviderStateMixin
           });
         }
         else{
-          EasyLoading.dismiss();
-          EasyLoading.showInfo("upload/imgMood请求失败");
+          AppLoading.dismiss();
+          ToastUtil.showMsg("upload/imgMood请求失败");
         }
       });
     }
@@ -266,7 +266,7 @@ class MoodTextCtrl extends GetxController with GetSingleTickerProviderStateMixin
         data: params,
         options: Options(sendTimeout: 1000, receiveTimeout: 1000)
     ).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         if (!isRawFocus) {
           focusNode.dispose();

+ 13 - 13
lib/pages/today/mood_record/controller/mood_type_ctrl.dart

@@ -3,7 +3,7 @@ import 'dart:async';
 
 import 'package:flutter/material.dart';
 import 'package:flutter_draggable_gridview/flutter_draggable_gridview.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/utils/string_count.dart';
 import 'package:sp_util/sp_util.dart';
@@ -51,10 +51,10 @@ class MoodTypeCtrl extends GetxController {
     userModel = UserService().getUserInfo();
     showRecordTime = chooseCtrl.showRecordTime;
     if (chooseCtrl.typeList.isEmpty) {
-      EasyLoading.show();
+      AppLoading.show();
       _requestTypeEvent =
           AppEvent.getInstance()?.on<MoodTypeRequestSucceedEvent>().listen((event) {
-            EasyLoading.dismiss();
+            AppLoading.dismiss();
             _initData();
           });
     }
@@ -104,7 +104,7 @@ class MoodTypeCtrl extends GetxController {
 
   void _requestMoodType(int reloadType) {
 
-    EasyLoading.show();
+    AppLoading.show();
     MoodChooseCtrl chooseCtrl = Get.find();
 
     Map<String,dynamic> params = new Map();
@@ -118,7 +118,7 @@ class MoodTypeCtrl extends GetxController {
     params["direction"] = direction;
 
     HttpUtils.get<List<MoodTypeModel>>(HttpUrl.mood_type_list_URL, queryParameters: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<MoodTypeModel> list = ret.data??[];
         if (rawList.length > 0) {
@@ -246,12 +246,12 @@ class MoodTypeCtrl extends GetxController {
 
   void submitDeleteType(int typeId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["typeId"] = typeId;
 
     HttpUtils.post(HttpUrl.mood_type_delete_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _requestMoodType(3);
       } else {
@@ -262,7 +262,7 @@ class MoodTypeCtrl extends GetxController {
 
   void submitTypeSort() {
 
-    EasyLoading.show();
+    AppLoading.show();
     List<Map<String,dynamic>> list = [];
 
     for(int i = 0; i < editTypeList.length; i++) {
@@ -275,7 +275,7 @@ class MoodTypeCtrl extends GetxController {
     }
 
     HttpUtils.post(HttpUrl.mood_type_sort_URL, data: {"list": list}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         typeTextCtrl.text = "";
         _requestMoodType(3);
@@ -298,14 +298,14 @@ class MoodTypeCtrl extends GetxController {
 
   void submitCustomMoodType(int emotionTypeId) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["name"] = typeTextCtrl.text;
     params["desc"] = "";
     params["direction"] = emotionTypeId;
 
     HttpUtils.post(HttpUrl.mood_type_add_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         typeTextCtrl.text = "";
         _requestMoodType(3);
@@ -317,9 +317,9 @@ class MoodTypeCtrl extends GetxController {
 
   void submitTypeRestoreDefaultSort() {
 
-    EasyLoading.show();
+    AppLoading.show();
     HttpUtils.post(HttpUrl.mood_type_restore_default_sort_URL, data: {}).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         isDefaultSort = true;
         _requestMoodType(3);

+ 2 - 5
lib/pages/today/mood_record/page/mood_reason_page.dart

@@ -2,7 +2,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_draggable_gridview/flutter_draggable_gridview.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/module/app_service.dart';
@@ -452,10 +452,7 @@ class MoodReasonPage extends GetView<MoodReasonCtrl>{
                             onTap: () {
                               if (_.isSave) {
                                 if (_.countCustomMoodReasonLength()>4) {
-                                  EasyLoading.showToast(
-                                    "事件名称超过最大字数限制".tr,
-                                    maskType: EasyLoadingMaskType.black,
-                                  );
+                                  ToastUtil.showMsg("事件名称超过最大字数限制".tr);
                                 }
                                 else {
                                   _.submitCustomMoodReason();

+ 3 - 3
lib/pages/today/mood_record/page/mood_text_page.dart

@@ -5,7 +5,7 @@ import 'dart:io';
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_image_compress/flutter_image_compress.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
@@ -629,7 +629,7 @@ class MoodTextPage extends GetView<MoodTextCtrl> {
     );
 
     if ((imageList??[]).isNotEmpty) {
-      EasyLoading.show();
+      AppLoading.show();
       for (AssetEntity assetEntity in imageList??[]) {
         String fileName = OssUtils.getUUid();
         controller.imageList.add(
@@ -640,7 +640,7 @@ class MoodTextPage extends GetView<MoodTextCtrl> {
         );
       }
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
 
       controller.update(["text", "photoButton"]);
       controller.focusNode.unfocus();

+ 2 - 5
lib/pages/today/mood_record/page/mood_type_page.dart

@@ -2,7 +2,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_draggable_gridview/flutter_draggable_gridview.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/today/mood_record/controller/mood_type_ctrl.dart';
@@ -459,10 +459,7 @@ class MoodTypePage extends GetView<MoodTypeCtrl> {
                               onTap: () {
                                 if (_.isSave) {
                                   if (_.countCustomMoodTypeLength()>4) {
-                                    EasyLoading.showToast(
-                                      "情绪名称超过最大字数限制".tr,
-                                      maskType: EasyLoadingMaskType.black,
-                                    );
+                                    ToastUtil.showMsg("情绪名称超过最大字数限制".tr);
                                   }
                                   else {
                                     _.submitCustomMoodType(emotionTypeId);

+ 3 - 3
lib/pages/today/practice/controller/assess_report_ctrl.dart

@@ -6,7 +6,7 @@ import 'dart:ui';
 
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
@@ -58,12 +58,12 @@ class AssessReportCtrl extends GetxController {
   //请求测评报告
   void _requestAssessReport() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["submitId"] = submitId;
 
     HttpUtils.get<AssessReportModel>(HttpUrl.assess_report_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         reportModel = ret.data!;
         // update(["list"]);

+ 3 - 3
lib/pages/today/practice/page/assess_report_page.dart

@@ -9,7 +9,7 @@ import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_html/flutter_html.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
@@ -1188,9 +1188,9 @@ class AssessReportPage extends GetView<AssessReportCtrl> {
               isSaveImage: true,
               platformClick: (type) async {
                 Get.back();
-                EasyLoading.show();
+                AppLoading.show();
                 Uint8List? image = await WidgetToImageConverter.captureWidgetToImage(controller.containerKey);
-                EasyLoading.dismiss();
+                AppLoading.dismiss();
                 if (type == 1) { //微信
                   _wechatShare(WeChatScene.session, image!);
                 }

+ 3 - 3
lib/pages/today/practice/page/lesson_catalog_page.dart

@@ -2,7 +2,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:iquokka/pages/today/practice/model/lesson_model.dart';
 import 'package:iquokka/pages/today/practice/view/lesson_catalog_cell.dart';
 import 'package:iquokka/module/user_service.dart';
@@ -79,7 +79,7 @@ class _LessonCatalogState extends State<LessonCatalogPage>
   void _requestLessonList() {
 
     if (_isFirstRequest) {
-      EasyLoading.show();
+      AppLoading.show();
     }
 
     Map<String,dynamic> params = new Map();
@@ -89,7 +89,7 @@ class _LessonCatalogState extends State<LessonCatalogPage>
 
     HttpUtils.get<LessonModel>(HttpUrl.practice_lesson_list_URL, queryParameters: params).then((ret) {
       _isFirstRequest = false;
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         List<LessonRecords> list = ret.data!.records??[];
         if (_page == 1) {

+ 21 - 20
lib/pages/today/practice/page/practice_detail_page.dart

@@ -6,7 +6,6 @@ import 'dart:ui';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:fluwx/fluwx.dart';
 import 'package:get/get.dart';
@@ -24,6 +23,7 @@ import 'package:iquokka/pages/today/practice_assess/page/exam_page.dart';
 import 'package:iquokka/utils/app_static.dart';
 import 'package:iquokka/utils/base_app_bar.dart';
 import 'package:iquokka/module/user_service.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:logger/logger.dart';
 import 'package:sp_util/sp_util.dart';
 import 'package:universal_platform/universal_platform.dart';
@@ -159,13 +159,14 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
   //请求练习详情
   void _requestPracticeDetail(bool isInit) {
 
-    EasyLoading.show();
+    // AppLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["practiceId"] = _practiceId;
     print("idid == "+_practiceId.toString());
 
     HttpUtils.get<PracticeDetailModel>(HttpUrl.practice_detail_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _detailModel = ret.data!;
         _initBottomButtonStatus();
@@ -189,12 +190,12 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
   // 请求测评详情
   void _requestAssessDetail(bool isInit) {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["testId"] = _practiceId;
 
     HttpUtils.get<PracticeDetailModel>(HttpUrl.assess_detail_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _detailModel = ret.data!;
         _initBottomButtonStatus();
@@ -369,7 +370,7 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
                       fadeOutDuration: Duration(milliseconds: 0),
                       fadeInDuration: Duration(milliseconds: 0),
                       imageBuilder: (context, imageProvider) {
-                        //EasyLoading.dismiss();
+                        //AppLoading.dismiss();
                         return Image(image: imageProvider);
                       },
                     ),
@@ -841,11 +842,11 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
       return;
     }
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["practiceId"] = _practiceId;
     HttpUtils.post(HttpUrl.buy_practice_wechat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _wechatPay(ret.data);
       }
@@ -860,11 +861,11 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
       return;
     }
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["testId"] = _practiceId;
     HttpUtils.post(HttpUrl.buy_assess_wechat_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         _wechatPay(ret.data);
       }
@@ -966,7 +967,7 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
               isSaveImage: false,
               platformClick: (type) async {
                 Get.back();
-                EasyLoading.dismiss();
+                AppLoading.dismiss();
                 if (type == 1) { //微信
                   _wechatShare(WeChatScene.session);
                 }
@@ -983,10 +984,10 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
 
   void _appleInPay() async{
 
-    EasyLoading.show();
+    AppLoading.show();
     final bool isAvailable = await _inAppPurchase.isAvailable();
     if (!isAvailable) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       return;
     }
 
@@ -1009,7 +1010,7 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
       kProductIds.add(_detailModel.iosPrice??"");
     }
     else {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("暂无产品".tr);
       return;
     }
@@ -1019,13 +1020,13 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
 
     /// 查询不到说明没注册
     if (productDetailResponse.error != null) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("获取产品信息失败".tr);
       return;
     }
     /// 查询不到商品详情说明没注册
     if (productDetailResponse.productDetails.isEmpty) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       ToastUtil.showMsg("暂无产品".tr);
       return;
     }
@@ -1053,18 +1054,18 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
       } else if (purchaseDetails.status == PurchaseStatus.canceled) {
         // 取消订单
         _inAppPurchase.completePurchase(purchaseDetails);
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         Logger().d("取消订单...");
       } else {
         if (purchaseDetails.status == PurchaseStatus.error) {
           // 购买出错
-          EasyLoading.dismiss();
+          AppLoading.dismiss();
           ToastUtil.showMsg("购买出错".tr);
           _inAppPurchase.completePurchase(purchaseDetails);
           Logger().d("购买出错...");
         } else if (purchaseDetails.status == PurchaseStatus.purchased || purchaseDetails.status == PurchaseStatus.restored) {
           // 购买成功
-          //EasyLoading.dismiss();
+          //AppLoading.dismiss();
           Logger().d("购买成功...");
           Logger().d("productID = "+purchaseDetails.productID+",purchaseID = "+(purchaseDetails.purchaseID??""));
           Logger().d("transactionDate = "+(purchaseDetails.transactionDate??""));
@@ -1089,7 +1090,7 @@ class _MyFavoriteTabState extends State<PracticeDetailPage> with SingleTickerPro
     params["receiptData"] = purchaseDetails.verificationData.serverVerificationData;
 
     HttpUtils.post(HttpUrl.apple_in_purchase_verify_URL, data: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         _inAppPurchase.completePurchase(purchaseDetails);
         if (_type == 3) {

+ 4 - 4
lib/pages/today/practice/page/segment_finish_page.dart

@@ -3,7 +3,6 @@ import 'dart:io';
 
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/common/AppStoreScore.dart';
@@ -13,6 +12,7 @@ import 'package:iquokka/pages/my/main/model/user_model.dart';
 import 'package:iquokka/pages/my/setting/page/feedback_page.dart';
 import 'package:iquokka/pages/my/vip/page/vip_buy_page.dart';
 import 'package:iquokka/pages/today/practice/view/ai_respond_dialog.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:iquokka/utils/event_tracking.dart';
 import 'package:iquokka/utils/file_utils.dart';
 import 'package:logger/logger.dart';
@@ -203,7 +203,7 @@ class _MyFavoriteTabState extends State<SegmentFinishPage> with SingleTickerProv
   //请求练习记录详情
   void _requestPracticeRecordDetail() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["submitId"] = widget.recordId;
 
@@ -1136,7 +1136,7 @@ class _MyFavoriteTabState extends State<SegmentFinishPage> with SingleTickerProv
       return;
     }
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["submitId"] = widget.recordId;
     switch(_index){
@@ -1152,7 +1152,7 @@ class _MyFavoriteTabState extends State<SegmentFinishPage> with SingleTickerProv
     }
 
     HttpUtils.post(HttpUrl.practice_after_update_mood_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         // _toBack();
       }

+ 3 - 3
lib/pages/today/practice/view/ai_respond_dialog.dart

@@ -4,7 +4,7 @@ import 'dart:convert';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/pages/today/practice/model/ai_respond_model.dart';
@@ -68,13 +68,13 @@ class _AiRespondDialogState extends State<AiRespondDialog> with SingleTickerProv
   // 已经生成练习ai响应
   void _requestGeneratedAiRespond() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["recordId"] = widget.recordId;
     params["type"] = widget.type;
 
     HttpUtils.get<AiRespondModel>(HttpUrl.ai_respond_get_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         if (ret.data != null) {
           _aiRespondModel = ret.data!;

+ 13 - 13
lib/pages/today/practice_assess/controller/exam_ctrl.dart

@@ -7,7 +7,7 @@ import 'dart:io';
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_image_compress/flutter_image_compress.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
@@ -236,13 +236,13 @@ class ExamCtrl extends GetxController {
 
   void _requestSegmentList() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["sourceId"] = type==2?lessonId:id;
     params["sourceType"] = type==1?1:type==2?0:2;
 
     HttpUtils.get<List<SegmentModel>>(HttpUrl.segment_list_URL, queryParameters: params).then((ret) async {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess() && ret.data != null) {
         segmentList = ret.data!;
         if (segmentList.isEmpty) {
@@ -595,14 +595,14 @@ class ExamCtrl extends GetxController {
   //提交添加到继续练习
   void submitAddContinuePractice() {
 
-    EasyLoading.show();
+    AppLoading.show();
     Map<String,dynamic> params = new Map();
     params["practiceId"] = id;
     if (type == 2) {
       params["lessonId"] = lessonId;
     }
     HttpUtils.post(HttpUrl.practice_add_continue_URL, queryParameters: params).then((ret) {
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       if (ret.isSuccess()) {
         //saveDonePracticeData();
         SpUtil.remove("practice_crash");
@@ -665,7 +665,7 @@ class ExamCtrl extends GetxController {
 
   void submitImage() {
 
-    EasyLoading.show();
+    AppLoading.show();
     if (isSubmiting) {
       return;
     }
@@ -702,8 +702,8 @@ class ExamCtrl extends GetxController {
           });
         }
         else{
-          EasyLoading.dismiss();
-          EasyLoading.showInfo("upload/imgMood请求失败");
+          AppLoading.dismiss();
+          ToastUtil.showMsg("upload/imgMood请求失败");
         }
       });
     }
@@ -715,7 +715,7 @@ class ExamCtrl extends GetxController {
   // 提交
   void submitData() {
 
-    // EasyLoading.show();
+    // AppLoading.show();
     // if (isSubmiting) {
     //   return;
     // }
@@ -782,7 +782,7 @@ class ExamCtrl extends GetxController {
       params["submitId"] = submitId;
 
       HttpUtils.post<int>(HttpUrl.segment_edit_URL, data: params).then((ret) {
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         if (ret.isSuccess()) {
           int submitId2 = ret.data??0;
           AppEvent.getInstance()?.fire(PracticeOrAssessFinishEvent(type==3?2:1));
@@ -819,7 +819,7 @@ class ExamCtrl extends GetxController {
       params["sourceType"] = type==1?1:type==2?0:2;
 
       HttpUtils.post<int>(HttpUrl.segment_submit_URL, data: params).then((ret) {
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         if (ret.isSuccess()) {
           AppEvent.getInstance()?.fire(PracticeOrAssessFinishEvent(type==3?2:1));
           int submitId2 = ret.data??0;
@@ -1144,7 +1144,7 @@ class ExamCtrl extends GetxController {
     );
 
     if ((assetList??[]).isNotEmpty) {
-      EasyLoading.show();
+      AppLoading.show();
       for (AssetEntity assetEntity in assetList??[]) {
         String fileName = OssUtils.getUUid();
         SegmentImageModel imageModel = SegmentImageModel();
@@ -1154,7 +1154,7 @@ class ExamCtrl extends GetxController {
         imageList.add(imageModel);
       }
 
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       //focusNode.unfocus();
       update(["exam", "bottom"]);
       saveDonePracticeData();

+ 2 - 2
lib/pages/today/practice_assess/view/essay_view.dart

@@ -447,7 +447,7 @@ class EssayView extends GetView<ExamCtrl> {
   //   );
   //
   //   if ((imageList??[]).isNotEmpty) {
-  //     EasyLoading.show();
+  //     AppLoading.show();
   //     for (AssetEntity assetEntity in imageList??[]) {
   //       String fileName = OssUtils.getUUid();
   //       controller.imageList().add(
@@ -458,7 +458,7 @@ class EssayView extends GetView<ExamCtrl> {
   //       );
   //     }
   //
-  //     EasyLoading.dismiss();
+  //     AppLoading.dismiss();
   //
   //     controller.update(["exam", "bottom"]);
   //     controller.focusNode.unfocus();

+ 1 - 1
lib/pages/today/pwd_lock/page/pwd_lock_page.dart

@@ -2,7 +2,7 @@
 import 'dart:math';
 
 import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:iquokka/utils/app_static.dart';

+ 12 - 1
lib/utils/app_event.dart

@@ -177,7 +177,18 @@ class AiRespondFirstGeneratedEvent {
 
 
 
-
+/*
+  WidgetsBinding.instance.addPostFrameCallback((_) {
+      _isVisible = true;
+      _overlayEntry = OverlayEntry(
+        builder: (context) => Material(
+          type: MaterialType.transparency,
+          child: _buildLoadingView(message??""),
+        ),
+      );
+      Overlay.of(Get.overlayContext!)?.insert(_overlayEntry!);
+    });
+ */
 
 
 

+ 101 - 0
lib/utils/app_loading.dart

@@ -0,0 +1,101 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:fluttertoast/fluttertoast.dart';
+import 'package:get/get.dart';
+
+/// 使用fluttertoast实现的AppLoading单例
+class AppLoading {
+  // 私有构造函数
+  AppLoading._();
+
+  // 单例实例
+  static final AppLoading _instance = AppLoading._();
+
+  // 获取单例实例
+  static AppLoading get instance => _instance;
+
+  // 静态方法
+  static void show({String? message}) => instance.showLoading(message: message);
+  static void dismiss() => instance.hideLoading();
+
+  // Toast实例
+  FToast? _fToast;
+  bool _isVisible = false;
+
+  // 初始化FToast
+  void _initFToast() {
+    _fToast = FToast();
+    _fToast!.init(Get.overlayContext!);
+  }
+
+  /// 显示加载
+  void showLoading({String? message}) {
+    if (_isVisible) return;
+
+    WidgetsBinding.instance.addPostFrameCallback((_) {
+
+      // 初始化FToast
+      _initFToast();
+
+      _isVisible = true;
+
+      // Widget toast = Container(
+      //   padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0),
+      //   decoration: BoxDecoration(
+      //     borderRadius: BorderRadius.circular(25.0),
+      //     color: Colors.greenAccent,
+      //   ),
+      //   child: Row(
+      //     mainAxisSize: MainAxisSize.min,
+      //     children: [
+      //       Icon(Icons.check),
+      //       SizedBox(
+      //         width: 12.0,
+      //       ),
+      //       Text("This is a Custom Toast"),
+      //     ],
+      //   ),
+      // );
+
+      // 显示Toast,不自动消失
+      _fToast?.showToast(
+        child: Container(
+          padding: EdgeInsets.symmetric(horizontal: 24.0, vertical: 16.0),
+          width: 70,
+          height: 70,
+          decoration: BoxDecoration(
+            color: Colors.black54,
+            borderRadius: BorderRadius.circular(8.0),
+          ),
+          child: Column(
+            mainAxisSize: MainAxisSize.min,
+            children: [
+              CupertinoActivityIndicator(
+                radius: 14,
+                color: Colors.white,
+              ),
+              if (message != null && message.isNotEmpty)
+                Padding(
+                  padding: EdgeInsets.only(top: 8.0),
+                  child: Text(
+                    message,
+                    style: TextStyle(color: Colors.white),
+                  ),
+                ),
+            ],
+          ),
+        ),
+        gravity: ToastGravity.CENTER,
+        toastDuration: Duration(days: 1), // 设置很长时间,手动关闭
+      );
+    });
+  }
+
+  /// 隐藏加载
+  void hideLoading() {
+    if (_isVisible && _fToast != null) {
+      _fToast!.removeQueuedCustomToasts();
+      _isVisible = false;
+    }
+  }
+}

+ 3 - 3
lib/utils/hex_color.dart

@@ -2,7 +2,7 @@ import 'dart:ui';
 
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
-import 'package:macos_ui/macos_ui.dart';
+// import 'package:macos_ui/macos_ui.dart';
 import 'package:iquokka/module/app_service.dart';
 
 class HexColor extends Color {
@@ -18,7 +18,7 @@ class HexColor extends Color {
 
   //static Brightness brightness = MediaQuery.of(Get.context!).platformBrightness;
 
-  static bool isDarkMode = AppService().getThemeMode()==1?false:AppService().getThemeMode()==2?true:MediaQuery.of(Get.context!).platformBrightness.isDark;
+  static bool isDarkMode = AppService().getThemeMode()==1?false:AppService().getThemeMode()==2?true:(PlatformDispatcher.instance.platformBrightness==Brightness.dark);
 
   static final Color QUOKKA_LIGHT_L1 = HexColor("#E5E5E5");
   static final Color QUOKKA_DARK_L1 = HexColor("#444444");
@@ -80,7 +80,7 @@ class HexColor extends Color {
 
   static void reload() {
 
-    isDarkMode = AppService().getThemeMode()==1?false:AppService().getThemeMode()==2?true:MediaQuery.of(Get.context!).platformBrightness.isDark;
+    isDarkMode = AppService().getThemeMode()==1?false:AppService().getThemeMode()==2?true:(PlatformDispatcher.instance.platformBrightness==Brightness.dark);
 
     QUOKKA_T1 = isDarkMode?QUOKKA_DARK_T1:QUOKKA_LIGHT_T1;
     QUOKKA_T2 = isDarkMode?QUOKKA_DARK_T2:QUOKKA_LIGHT_T2;

+ 7 - 7
lib/utils/save_image_to_library.dart

@@ -2,7 +2,7 @@
 import 'dart:typed_data';
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/foundation.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:iquokka/utils/app_loading.dart';
 // import 'package:image_gallery_saver/image_gallery_saver.dart';
 import 'package:image_gallery_saver_plus/image_gallery_saver_plus.dart';
 import 'package:permission_handler/permission_handler.dart';
@@ -16,12 +16,12 @@ class SaveImageToLibrary {
 
     if (UniversalPlatform.isIOS) {
       if (await SaveImageToLibrary().checkStoragePermission()) {
-        EasyLoading.show();
+        AppLoading.show();
         final result = await ImageGallerySaverPlus.saveImage(
             uint8list,
             quality: 100
         );
-        EasyLoading.dismiss();
+        AppLoading.dismiss();
         bool saveResult = result["isSuccess"];
         ToastUtil.showMsg(saveResult?"保存成功":"保存失败");
         return saveResult;
@@ -29,12 +29,12 @@ class SaveImageToLibrary {
       return false;
     }
     else {
-      EasyLoading.show();
+      AppLoading.show();
       final result = await ImageGallerySaverPlus.saveImage(
           uint8list,
           quality: 100
       );
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       bool saveResult = result["isSuccess"];
       ToastUtil.showMsg(saveResult?"保存成功":"保存失败");
       return saveResult;
@@ -43,9 +43,9 @@ class SaveImageToLibrary {
 
   static Future<bool> saveLocalFile(String filePath) async {
     if (await SaveImageToLibrary().checkStoragePermission()) {
-      EasyLoading.show();
+      AppLoading.show();
       final result = await ImageGallerySaverPlus.saveFile(filePath);
-      EasyLoading.dismiss();
+      AppLoading.dismiss();
       bool saveResult = result["isSuccess"];
       ToastUtil.showMsg(saveResult?"保存成功":"保存失败");
       return saveResult;

+ 34 - 34
lib/utils/toast_utils.dart

@@ -1,7 +1,7 @@
 import 'dart:ui';
 
-import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
+// import 'package:flutter/material.dart';
+// import 'package:iquokka/utils/app_loading.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:iquokka/utils/hex_color.dart';
 
@@ -15,37 +15,37 @@ class ToastUtil {
     );
   }
 
-  static void settingEasyLoading() {
-
-    EasyLoading.instance
-      ..displayDuration = const Duration(milliseconds: 2000)
-      ..animationDuration = const Duration(milliseconds: 0)
-      ..indicatorType = EasyLoadingIndicatorType.fadingCircle
-      ..loadingStyle = EasyLoadingStyle.custom
-      ..indicatorSize = 78.0
-      ..radius = 10.0
-      ..contentPadding = EdgeInsets.all(10)
-    // ..progressColor = Colors.white
-    // ..backgroundColor = Colors.white
-    // ..indicatorColor = Colors.white
-    // ..textColor = Colors.black.withOpacity(0.87)
-      ..progressColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
-      ..backgroundColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
-      ..indicatorColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
-      ..textColor = HexColor.QUOKKA_T1
-      ..userInteractions = false
-      ..indicatorWidget = Image.asset(
-        "assets/images/loading.gif",
-        width: 70,
-        height: 70,
-      )
-      ..boxShadow = [BoxShadow(
-          color: HexColor("#000000").withOpacity(0.05),
-          offset: Offset(0, 0), //阴影xy轴偏移量
-          blurRadius: 24, //阴影模糊程度
-          spreadRadius: 0 //阴影扩散程度
-      )]
-      ..dismissOnTap = false;
-  }
+  // static void settingEasyLoading() {
+  //
+  //   EasyLoading.instance
+  //     ..displayDuration = const Duration(milliseconds: 2000)
+  //     ..animationDuration = const Duration(milliseconds: 0)
+  //     ..indicatorType = EasyLoadingIndicatorType.fadingCircle
+  //     ..loadingStyle = EasyLoadingStyle.custom
+  //     ..indicatorSize = 78.0
+  //     ..radius = 10.0
+  //     ..contentPadding = EdgeInsets.all(10)
+  //   // ..progressColor = Colors.white
+  //   // ..backgroundColor = Colors.white
+  //   // ..indicatorColor = Colors.white
+  //   // ..textColor = Colors.black.withOpacity(0.87)
+  //     ..progressColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
+  //     ..backgroundColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
+  //     ..indicatorColor = HexColor.QUOKKA_LIGHT_BG1_DARK_BG2
+  //     ..textColor = HexColor.QUOKKA_T1
+  //     ..userInteractions = false
+  //     ..indicatorWidget = Image.asset(
+  //       "assets/images/loading.gif",
+  //       width: 70,
+  //       height: 70,
+  //     )
+  //     ..boxShadow = [BoxShadow(
+  //         color: HexColor("#000000").withOpacity(0.05),
+  //         offset: Offset(0, 0), //阴影xy轴偏移量
+  //         blurRadius: 24, //阴影模糊程度
+  //         spreadRadius: 0 //阴影扩散程度
+  //     )]
+  //     ..dismissOnTap = false;
+  // }
 
 }

+ 0 - 6
macos/Flutter/GeneratedPluginRegistrant.swift

@@ -6,7 +6,6 @@ import FlutterMacOS
 import Foundation
 
 import app_links
-import appkit_ui_element_colors
 import audio_session
 import connectivity_plus_macos
 import device_info_plus
@@ -16,8 +15,6 @@ import flutter_timezone
 import in_app_purchase_storekit
 import in_app_review
 import just_audio
-import macos_ui
-import macos_window_utils
 import package_info_plus
 import path_provider_foundation
 import photo_manager
@@ -31,7 +28,6 @@ import wakelock_plus
 
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
-  AppkitUiElementColorsPlugin.register(with: registry.registrar(forPlugin: "AppkitUiElementColorsPlugin"))
   AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
   ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
   DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
@@ -41,8 +37,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin"))
   InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin"))
   JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
-  MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin"))
-  MacOSWindowUtilsPlugin.register(with: registry.registrar(forPlugin: "MacOSWindowUtilsPlugin"))
   FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
   PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
   PhotoManagerPlugin.register(with: registry.registrar(forPlugin: "PhotoManagerPlugin"))

+ 0 - 48
pubspec.lock

@@ -33,14 +33,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.0.4"
-  appkit_ui_element_colors:
-    dependency: transitive
-    description:
-      name: appkit_ui_element_colors
-      sha256: c3e50f900aae314d339de489535736238627071457c4a4a2dbbb1545b4f04f22
-      url: "https://pub.dev"
-    source: hosted
-    version: "1.0.0"
   archive:
     dependency: transitive
     description:
@@ -454,14 +446,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "0.0.12"
-  flutter_easyloading:
-    dependency: "direct main"
-    description:
-      name: flutter_easyloading
-      sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
-      url: "https://pub.dev"
-    source: hosted
-    version: "3.0.5"
   flutter_html:
     dependency: "direct main"
     description:
@@ -595,14 +579,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "9.6.0"
-  flutter_spinkit:
-    dependency: transitive
-    description:
-      name: flutter_spinkit
-      sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472
-      url: "https://pub.dev"
-    source: hosted
-    version: "5.2.1"
   flutter_staggered_animations:
     dependency: "direct main"
     description:
@@ -725,14 +701,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "4.6.6"
-  gradient_borders:
-    dependency: transitive
-    description:
-      name: gradient_borders
-      sha256: b1cd969552c83f458ff755aa68e13a0327d09f06c3f42f471b423b01427f21f8
-      url: "https://pub.dev"
-    source: hosted
-    version: "1.0.1"
   gtk:
     dependency: transitive
     description:
@@ -1045,22 +1013,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "3.1.2"
-  macos_ui:
-    dependency: "direct main"
-    description:
-      name: macos_ui
-      sha256: "5238460b083411af1c6f2f6cb4771a7af82a3ecf5249b35ad7ac0013bcc93cef"
-      url: "https://pub.dev"
-    source: hosted
-    version: "2.0.8"
-  macos_window_utils:
-    dependency: transitive
-    description:
-      name: macos_window_utils
-      sha256: "230be594d26f6dee92c5a1544f4242d25138a5bfb9f185b27f14de3949ef0be8"
-      url: "https://pub.dev"
-    source: hosted
-    version: "1.5.0"
   matcher:
     dependency: transitive
     description:

+ 2 - 2
pubspec.yaml

@@ -72,7 +72,7 @@ dependencies:
 
   path_provider: ^2.0.13
   #  m_loading: ^0.0.2
-  flutter_easyloading: ^3.0.5
+#  flutter_easyloading: ^3.0.5
 
   #加载网络图片
   cached_network_image: ^3.3.1
@@ -127,7 +127,7 @@ dependencies:
   #  flutter_radar_chart: ^0.2.1  #雷达图
   # fl_animated_linechart: ^1.1.9 区域图
 
-  macos_ui: ^2.0.0
+#  macos_ui: ^2.0.0
 #  package_info_plus: ^4.1.0
   package_info_plus: ^8.0.2
   win32: ^5.5.5 # package_info_plus中包含的