Browse Source

Merge branch 'dev' of http://git.wmzhubo.com/guadoutech/YYHome into dev

jiangwei 2 months ago
parent
commit
c4d2bb5de6
100 changed files with 1114 additions and 920 deletions
  1. 4 25
      app/android/app/src/main/kotlin/com/hongyegroup/property_management/MainActivity.java
  2. 5 4
      app/lib/main.dart
  3. 4 0
      melos.yaml
  4. 34 12
      packages/cpt_auth/lib/modules/auth_login/auth_login_page.dart
  5. 6 3
      packages/cpt_auth/lib/modules/auth_login/auth_login_state.dart
  6. 8 2
      packages/cpt_auth/lib/modules/auth_login/auth_login_view_model.dart
  7. 18 16
      packages/cpt_auth/lib/modules/forgot_input/forgot_input_page.dart
  8. 20 16
      packages/cpt_auth/lib/modules/forgot_input/forgot_input_state.dart
  9. 8 2
      packages/cpt_auth/lib/modules/forgot_input/forgot_input_view_model.dart
  10. 3 3
      packages/cpt_auth/lib/modules/forgot_verify/forgot_verify_page.dart
  11. 4 4
      packages/cpt_auth/lib/modules/forgot_verify/forgot_verify_view_model.dart
  12. 21 19
      packages/cpt_auth/lib/modules/sign_up/sign_up_page.dart
  13. 5 1
      packages/cpt_auth/lib/modules/sign_up/sign_up_state.dart
  14. 8 1
      packages/cpt_auth/lib/modules/sign_up/sign_up_view_model.dart
  15. 6 6
      packages/cpt_auth/lib/modules/sing_up_verify/sign_up_verify_page.dart
  16. 8 9
      packages/cpt_auth/lib/modules/sing_up_verify/sign_up_verify_view_model.dart
  17. 1 1
      packages/cpt_auth/lib/router/page/auth_page_router.gr.dart
  18. 65 64
      packages/cpt_community/lib/components/garage_card.dart
  19. 46 44
      packages/cpt_community/lib/components/newsfeed_card_footer.dart
  20. 4 3
      packages/cpt_community/lib/modules/community/community_page.dart
  21. 29 27
      packages/cpt_community/lib/modules/community/community_state.dart
  22. 8 35
      packages/cpt_community/lib/modules/community/community_vm.dart
  23. 4 3
      packages/cpt_community/lib/modules/community/following/following_page.dart
  24. 4 3
      packages/cpt_community/lib/modules/community/foryou/foryou_page.dart
  25. 4 3
      packages/cpt_community/lib/modules/community/news/news_page.dart
  26. 20 11
      packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_page.dart
  27. 2 1
      packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_state.dart
  28. 3 2
      packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_vm.dart
  29. 2 2
      packages/cpt_community/lib/modules/community/newsfeed_post/newsfeed_post_page.dart
  30. 2 1
      packages/cpt_community/lib/modules/community/newsfeed_post/newsfeed_post_vm.dart
  31. 4 3
      packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_page.dart
  32. 2 1
      packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_vm.dart
  33. 7 7
      packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_page.dart
  34. 1 0
      packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_state.dart
  35. 1 0
      packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_vm.dart
  36. 2 1
      packages/cpt_community/lib/modules/my_following/components/item_following.dart
  37. 2 1
      packages/cpt_community/lib/modules/my_following/my_follow/my_follow_page.dart
  38. 2 1
      packages/cpt_community/lib/modules/my_following/my_follower/my_follower_page.dart
  39. 3 2
      packages/cpt_community/lib/modules/my_following/my_following_page.dart
  40. 1 1
      packages/cpt_community/lib/modules/my_following/my_following_tabs.dart
  41. 4 2
      packages/cpt_community/lib/modules/my_following/tabs_data.dart
  42. 2 1
      packages/cpt_community/lib/modules/my_posts/my_posts_page.dart
  43. 4 3
      packages/cpt_community/lib/modules/my_posts/my_posts_vm.dart
  44. 3 1
      packages/cpt_facility/lib/modules/book_confirm/book_confirm_page.dart
  45. 9 2
      packages/cpt_facility/lib/modules/booking/facility_booking_page.dart
  46. 5 2
      packages/cpt_facility/lib/modules/detail/facility_detail_page.dart
  47. 2 2
      packages/cpt_facility/lib/modules/facility/active/item_facility_active.dart
  48. 4 2
      packages/cpt_facility/lib/modules/facility/facility_page.dart
  49. 2 2
      packages/cpt_facility/lib/modules/facility/history/item_facility_history.dart
  50. 4 3
      packages/cpt_form/lib/modules/form/apply/item_form_apply.dart
  51. 2 0
      packages/cpt_form/lib/modules/form/approve/item_form_approve.dart
  52. 2 0
      packages/cpt_form/lib/modules/form/not_approve/item_form_not_approve.dart
  53. 2 0
      packages/cpt_form/lib/modules/form/submit/item_form_submit.dart
  54. 2 2
      packages/cpt_main/lib/modules/feedback/detail/feedback_detail_page.dart
  55. 8 2
      packages/cpt_main/lib/modules/feedback/item_feedback.dart
  56. 229 169
      packages/cpt_main/lib/modules/home/home_page.dart
  57. 0 12
      packages/cpt_main/lib/modules/home/home_state.dart
  58. 24 9
      packages/cpt_main/lib/modules/home/item_home_category.dart
  59. 7 36
      packages/cpt_main/lib/modules/home/item_home_last_news.dart
  60. 8 1
      packages/cpt_main/lib/modules/home/item_home_last_trans.dart
  61. 10 10
      packages/cpt_main/lib/modules/home/item_home_property_news.dart
  62. 1 1
      packages/cpt_main/lib/modules/home/latest_news/item_latest_news.dart
  63. 1 1
      packages/cpt_main/lib/modules/home/management_guides/item_management_guide.dart
  64. 1 1
      packages/cpt_main/lib/modules/home/property_news/item_list_news.dart
  65. 1 1
      packages/cpt_main/lib/modules/main/main_page.dart
  66. 5 0
      packages/cpt_main/lib/modules/main/main_state.dart
  67. 1 1
      packages/cpt_main/lib/modules/visitor/item_visitor.dart
  68. 7 1
      packages/cpt_main/lib/modules/visitor/register/visitor_register_page.dart
  69. 35 44
      packages/cpt_notice_board/lib/modules/announ/page/announ_page.dart
  70. 8 8
      packages/cpt_notice_board/lib/modules/announcement_detail/page/announcement_detail_page.dart
  71. 24 23
      packages/cpt_notice_board/lib/modules/documents/page/documents_page.dart
  72. 16 15
      packages/cpt_notice_board/lib/modules/documents_list/page/documents_list_page.dart
  73. 10 8
      packages/cpt_notice_board/lib/modules/event/page/event_page.dart
  74. 20 16
      packages/cpt_notice_board/lib/modules/event_detail/page/event_detail_page.dart
  75. 8 11
      packages/cpt_notice_board/lib/modules/notice_board/page/notice_board_page.dart
  76. 4 3
      packages/cpt_notice_board/lib/modules/notice_board/vm/notice_board_view_model.dart
  77. 1 1
      packages/cpt_notice_board/lib/router/page/notice_board_page_router.dart
  78. 9 1
      packages/cpt_payment/lib/modules/add_card/add_card_page.dart
  79. 2 5
      packages/cpt_payment/lib/modules/choose_card/choose_card_page.dart
  80. 2 1
      packages/cpt_payment/lib/modules/choose_card/choose_card_view_model.dart
  81. 65 0
      packages/cpt_payment/lib/modules/choose_card/item_card.dart
  82. 3 3
      packages/cpt_payment/lib/modules/payment/history/item_history_list.dart
  83. 2 2
      packages/cpt_payment/lib/modules/payment/info/info_screen.dart
  84. 1 1
      packages/cpt_payment/lib/modules/payment/manage/item_manage.dart
  85. 2 1
      packages/cpt_payment/lib/modules/payment/manage/manage_view_model.dart
  86. 3 1
      packages/cpt_payment/lib/modules/payment/payment/item_payment_list.dart
  87. 15 4
      packages/cpt_payment/lib/modules/payment_confirm/payment_confirm_page.dart
  88. 15 4
      packages/cpt_payment/lib/modules/payment_info/payment_info_page.dart
  89. 3 2
      packages/cpt_payment/lib/modules/payment_success/payment_success_page.dart
  90. 30 30
      packages/cpt_profile/lib/modules/change_mobile/change_mobile_page.dart
  91. 6 0
      packages/cpt_profile/lib/modules/change_mobile/change_mobile_state.dart
  92. 12 7
      packages/cpt_profile/lib/modules/change_mobile/change_mobile_view_model.dart
  93. 14 11
      packages/cpt_profile/lib/modules/my_estate/item_estate.dart
  94. 1 1
      packages/cpt_profile/lib/modules/my_estate/my_estate_view_model.dart
  95. 18 17
      packages/cpt_profile/lib/modules/reset_password/reset_password_page.dart
  96. 1 1
      packages/cpt_profile/lib/modules/reset_password/reset_password_view_model.dart
  97. 2 1
      packages/cpt_profile/lib/modules/setting/setting_view_model.dart
  98. 19 19
      packages/cpt_property/lib/modules/ioan/property_ioan_page.dart
  99. 32 72
      packages/cpt_property/lib/modules/ioan/property_ioan_vm.dart
  100. 0 0
      packages/cpt_property/lib/modules/news/page/property_news_page.dart

+ 4 - 25
app/android/app/src/main/kotlin/com/hongyegroup/property_management/MainActivity.java

@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
 import io.flutter.embedding.android.FlutterActivity;
 import io.flutter.embedding.engine.FlutterEngine;
 import io.flutter.plugin.common.MethodChannel;
+import android.os.Build;
 
 public class MainActivity extends FlutterActivity {
 
@@ -30,31 +31,9 @@ public class MainActivity extends FlutterActivity {
         MethodChannel methodChannel = new MethodChannel(flutterEngine.getDartExecutor(), "com.room/opapp");
 
         methodChannel.setMethodCallHandler((call, result) -> {
-            //检查人脸数量
-           if (call.method.equals("bringAppToForeground")) {
-                //启动MainActivity自己
-                Log.d("MainActivity", "执行 methodChannel -> bringAppToForeground");
-
-//                Intent intent = new Intent(this, MainActivity.class);
-//                intent.setAction(Intent.ACTION_MAIN);
-//                intent.addCategory(Intent.CATEGORY_LAUNCHER);
-//                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-//                intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-//                startActivity(intent);
-
-//                ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
-//                List<ActivityManager.AppTask> appTasks = activityManager.getAppTasks();
-//                if (!appTasks.isEmpty()) {
-//                    appTasks.get(0).moveToFront();
-//                }
-
-//                PackageManager packageManager = getPackageManager();
-//                Intent intent = packageManager.getLaunchIntentForPackage("com.hongyegroup.zhurijob");
-//                if (intent != null) {
-//                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-//                    startActivity(intent);
-//                }
-
+            //返回安卓版本
+           if (call.method.equals("getAndroidSdkInt")) {
+               result.success(Build.VERSION.SDK_INT);
             } else if (call.method.equals("getNativeRouterName")) {
                 // 获取当前需要跳转的子路由
                 Log.d("MainActivity", "执行 methodChannel -> getNativeRouterName");

+ 5 - 4
app/lib/main.dart

@@ -56,8 +56,8 @@ void main() async {
     ..addServiceProvider(servicesServiceProvider)
     ..addServiceProvider(profileServiceProvider);
 
-  runApp(ProviderScope(
-    parent: globalContainer,
+  runApp(UncontrolledProviderScope(
+    container: globalContainer,
     child: MyApp(),
   ));
 }
@@ -143,6 +143,7 @@ class MyApp extends HookConsumerWidget {
       });
       return () {
         // 组件卸载时执行
+        globalContainer.dispose();
       };
     }, []);
 
@@ -155,13 +156,13 @@ class MyApp extends HookConsumerWidget {
 
           //主题配置
           theme: ThemeData(
-            colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF4161D0)),
+            colorScheme: ColorScheme.fromSeed(seedColor: AppColorsTheme.colorPrimary),
             useMaterial3: false,
           ).copyWith(extensions: [
             AppColorsTheme.light(),
           ]),
           darkTheme: ThemeData(
-            colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF4161D0), brightness: Brightness.dark),
+            colorScheme: ColorScheme.fromSeed(seedColor: AppColorsTheme.colorPrimary, brightness: Brightness.dark),
             useMaterial3: false,
           ).copyWith(extensions: [
             AppColorsTheme.dark(),

+ 4 - 0
melos.yaml

@@ -115,6 +115,10 @@ scripts:
     run: cd "$MELOS_ROOT_PATH/app" && flutter build apk
     description: 编译安卓Release的APK格式安装包.
 
+  build_aab:
+    run: cd "$MELOS_ROOT_PATH/app" && flutter build appbundle
+    description: 编译安卓Release的APK格式安装包.
+
   resource_get:
     run: |
       cd "$MELOS_ROOT_PATH/packages/cs_domain/" && flutter pub get

+ 34 - 12
packages/cpt_auth/lib/modules/auth_login/auth_login_page.dart

@@ -6,6 +6,7 @@ import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:plugin_basic/dialog/country_code_selecter.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
@@ -72,16 +73,35 @@ class AuthLoginPage extends HookConsumerWidget {
               ).marginOnly(top: 45, bottom: 45),
 
               // 登录表单 - 账号
-              _buildInputLayout(
-                context,
-                state,
-                "account",
-                textInputAction: TextInputAction.next,
-                errorText: state.accountErrorText,
-                onSubmit: (formKey, value) {
-                  state.formData[formKey]!['focusNode'].unfocus();
-                  FocusScope.of(context).requestFocus(state.formData['password']!['focusNode']);
-                },
+              Row(
+                mainAxisSize: MainAxisSize.max,
+                crossAxisAlignment: CrossAxisAlignment.center,
+                children: [
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    onChanged: (countryCode) {
+                      viewModel.saveCountryCode(countryCode);
+                    },
+                  ).marginOnly(left: 15),
+
+                  //电话输入框
+                  _buildInputLayout(
+                    context,
+                    state,
+                    "account",
+                    fillBGColor: Colors.transparent,
+                    textInputType: TextInputType.number,
+                    textInputAction: TextInputAction.done,
+                    errorText: state.accountErrorText,
+                    onSubmit: (formKey, value) {
+                      state.formData[formKey]!['focusNode'].unfocus();
+                      FocusScope.of(context).requestFocus(state.formData['password']!['focusNode']);
+                    },
+                  ).expanded(),
+                ],
+              ).decorated(
+                color: context.appColors.authFiledBG,
+                borderRadius: BorderRadius.circular(5.0),
               ),
 
               // 登录表单 - 密码
@@ -96,7 +116,7 @@ class AuthLoginPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.pwdVisibility
+                  icon: !state.pwdVisibility
                       ? const MyAssetImage(
                           Assets.authPasswordHide,
                           width: 22.5,
@@ -159,6 +179,7 @@ class AuthLoginPage extends HookConsumerWidget {
                 children: [
                   MyAssetImage(
                     state.isAgreeTerms ? Assets.baseServiceCheckBoxChecked : Assets.baseServiceCheckBoxUncheck,
+                    color: state.isAgreeTerms ? context.appColors.textPrimary : Colors.transparent,
                     width: 15.5,
                     height: 15.5,
                   ).onTap(viewModel.switchAgreeTerms, padding: 10),
@@ -201,6 +222,7 @@ class AuthLoginPage extends HookConsumerWidget {
     Widget? rightWidget, //右侧的布局
     TextInputType textInputType = TextInputType.text,
     String? errorText,
+    Color? fillBGColor,
     bool obscureText = false,
     TextInputAction textInputAction = TextInputAction.done,
     Function? onSubmit,
@@ -208,7 +230,7 @@ class AuthLoginPage extends HookConsumerWidget {
     return IgnoreKeyboardDismiss(
       child: MyTextField(
         key,
-        fillBackgroundColor: context.appColors.authFiledBG,
+        fillBackgroundColor: fillBGColor ?? context.appColors.authFiledBG,
         state.formData[key]!['value'],
         hintText: state.formData[key]!['hintText'],
         hintStyle: TextStyle(

+ 6 - 3
packages/cpt_auth/lib/modules/auth_login/auth_login_state.dart

@@ -12,6 +12,8 @@ class LoginState {
   String? accountErrorText;
   String? passwordErrorText;
 
+  String? countryCode;
+
   //是否明文展示密码
   bool pwdVisibility;
 
@@ -29,12 +31,13 @@ class LoginState {
     this.pwdVisibility = false,
     this.isLoginBtnEnable = false,
     this.isAgreeTerms = false,
+    this.countryCode,
   }) : formData = formData ??
             {
               'account': {
                 'value': '',
                 'controller': TextEditingController(),
-                'hintText': S.current.phone_email,
+                'hintText': S.current.mobile_phone,
                 'focusNode': FocusNode(),
                 'obsecure': false,
               },
@@ -55,6 +58,7 @@ class LoginState {
     bool? pwdVisibility,
     bool? isLoginBtnEnable,
     bool? isAgreeTerms,
+    String? countryCode,
   }) {
     return LoginState(
       formData: this.formData,
@@ -63,8 +67,7 @@ class LoginState {
       pwdVisibility: pwdVisibility ?? this.pwdVisibility,
       isLoginBtnEnable: isLoginBtnEnable ?? this.isLoginBtnEnable,
       isAgreeTerms: isAgreeTerms ?? this.isLoginBtnEnable,
+      countryCode: countryCode ?? this.countryCode,
     );
   }
-
-
 }

+ 8 - 2
packages/cpt_auth/lib/modules/auth_login/auth_login_view_model.dart

@@ -53,7 +53,7 @@ class AuthLoginViewModel extends _$AuthLoginViewModel {
     Log.d('当前待提交的 账号:$account password:$password');
 
     if (Utils.isEmpty(account)) {
-      state = state.copyWith(accountErrorText: "Phone/Email cannot be empty!");
+      state = state.copyWith(accountErrorText: "Phone cannot be empty!");
       return;
     }
 
@@ -62,7 +62,7 @@ class AuthLoginViewModel extends _$AuthLoginViewModel {
       return;
     }
 
-    final result = await authRepository.authLogin(AppConstant.countryCode + account, password);
+    final result = await authRepository.authLogin("${state.countryCode}$account", password);
 
     //请求成功去首页
     if (result.isSuccess) {
@@ -141,4 +141,10 @@ class AuthLoginViewModel extends _$AuthLoginViewModel {
     passwordController.dispose();
     Log.d("LoginViewModel 销毁 onDispose");
   }
+
+  //保存当前选择的国家区号
+  void saveCountryCode(String? countryCode) {
+    state = state.copyWith(countryCode: countryCode);
+    Log.d("saveCountryCode:${state.countryCode}");
+  }
 }

+ 18 - 16
packages/cpt_auth/lib/modules/forgot_input/forgot_input_page.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:router/ext/auto_router_extensions.dart';
+import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
@@ -13,7 +14,7 @@ import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_field.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/widget_export.dart';
-
+import 'package:plugin_basic/dialog/country_code_selecter.dart';
 import '../../router/page/auth_page_router.dart';
 import 'forgot_input_state.dart';
 import 'forgot_input_view_model.dart';
@@ -84,24 +85,19 @@ class ForgotInputPage extends HookConsumerWidget {
                 mainAxisSize: MainAxisSize.max,
                 crossAxisAlignment: CrossAxisAlignment.center,
                 children: [
-                  const MyAssetImage(
-                    Assets.authCountrySg,
-                    width: 45,
-                    height: 30,
-                  ),
-                  MyTextView(
-                    "+65",
-                    textColor: context.appColors.textBlack,
-                    fontSize: 18.5,
-                    marginLeft: 15,
-                    marginRight: 12,
-                    isFontMedium: true,
-                  ),
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    onChanged: (countryCode) {
+                     viewModel.saveCountryCode(countryCode);
+                    },
+                  ).marginOnly(left: 15),
+
                   //电话输入框
                   _buildInputLayout(
                     context,
                     state,
                     "phone",
+                    fillBGColor: Colors.transparent,
                     textInputType: TextInputType.number,
                     textInputAction: TextInputAction.done,
                     errorText: state.phoneErrorText,
@@ -111,7 +107,12 @@ class ForgotInputPage extends HookConsumerWidget {
                     },
                   ).expanded(),
                 ],
-              ).marginOnly(top: 15),
+              )
+                  .decorated(
+                    color: context.appColors.authFiledBG,
+                    borderRadius: BorderRadius.circular(5.0),
+                  )
+                  .marginOnly(top: 15),
 
               MyButton(
                 onPressed: viewModel.submitInput,
@@ -142,13 +143,14 @@ class ForgotInputPage extends HookConsumerWidget {
     TextInputType textInputType = TextInputType.text,
     String? errorText,
     bool obscureText = false,
+    Color? fillBGColor,
     TextInputAction textInputAction = TextInputAction.done,
     Function? onSubmit,
   }) {
     return IgnoreKeyboardDismiss(
       child: MyTextField(
         key,
-        fillBackgroundColor: context.appColors.authFiledBG,
+        fillBackgroundColor: fillBGColor ?? context.appColors.authFiledBG,
         state.formData[key]!['value'],
         hintText: state.formData[key]!['hintText'],
         hintStyle: TextStyle(

+ 20 - 16
packages/cpt_auth/lib/modules/forgot_input/forgot_input_state.dart

@@ -12,6 +12,7 @@ class ForgotInputState {
   String? emailErrorText;
   String? phoneErrorText;
 
+  String? countryCode; //用户选择的区号
 
   // ===================================  Begin  ↓  ===================================
 
@@ -19,32 +20,35 @@ class ForgotInputState {
     Map<String, Map<String, dynamic>>? formData,
     this.emailErrorText,
     this.phoneErrorText,
+    this.countryCode,
   }) : formData = formData ??
-      {
-        'email': {
-          'value': '',
-          'controller': TextEditingController(),
-          'hintText': S.current.email,
-          'focusNode': FocusNode(),
-          'obsecure': false,
-        },
-        'phone': {
-          'value': '',
-          'controller': TextEditingController(),
-          'hintText': S.current.mobile_phone,
-          'focusNode': FocusNode(),
-          'obsecure': false,
-        },
-      };
+            {
+              'email': {
+                'value': '',
+                'controller': TextEditingController(),
+                'hintText': S.current.email,
+                'focusNode': FocusNode(),
+                'obsecure': false,
+              },
+              'phone': {
+                'value': '',
+                'controller': TextEditingController(),
+                'hintText': S.current.mobile_phone,
+                'focusNode': FocusNode(),
+                'obsecure': false,
+              },
+            };
 
   ForgotInputState copyWith({
     String? emailErrorText,
     String? phoneErrorText,
+    String? countryCode,
   }) {
     return ForgotInputState(
       formData: this.formData,
       emailErrorText: emailErrorText,
       phoneErrorText: phoneErrorText,
+      countryCode: countryCode ?? this.countryCode,
     );
   }
 }

+ 8 - 2
packages/cpt_auth/lib/modules/forgot_input/forgot_input_view_model.dart

@@ -36,14 +36,14 @@ class ForgotInputViewModel extends _$ForgotInputViewModel {
     final email = emailController.text;
     final phone = phoneController.text;
 
-    Log.d('当前待提交的 邮箱:${email} 电话:${phone}');
+    Log.d('当前待提交的 邮箱:${email} 电话:${phone} 最终的电话:${state.countryCode}$phone');
 
     if (Utils.isEmpty(phone)) {
       state = state.copyWith(phoneErrorText: "Phone cannot be empty!");
       return;
     }
 
-    ForgotVerifyPage.startInstance(phone: phone);
+    ForgotVerifyPage.startInstance(phone: "${state.countryCode}$phone");
   }
 
   //初始化监听
@@ -75,4 +75,10 @@ class ForgotInputViewModel extends _$ForgotInputViewModel {
     Log.d("ForgotInputViewModel 销毁 onDispose");
   }
 
+  //保存当前选择的国家区号
+  void saveCountryCode(String? countryCode) {
+    state = state.copyWith(countryCode: countryCode);
+    Log.d("saveCountryCode:${state.countryCode}");
+  }
+
 }

+ 3 - 3
packages/cpt_auth/lib/modules/forgot_verify/forgot_verify_page.dart

@@ -68,7 +68,7 @@ class ForgotVerifyPage extends HookConsumerWidget {
               ),
 
               MyTextView(
-                "+${AppConstant.countryCode} ${phone ?? "-"}",
+                phone ?? "-",
                 fontSize: 23,
                 marginBottom: 23,
                 isFontMedium: true,
@@ -112,7 +112,7 @@ class ForgotVerifyPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.pwdVisibility
+                  icon: !state.pwdVisibility
                       ? const MyAssetImage(
                           Assets.authPasswordHide,
                           width: 22.5,
@@ -145,7 +145,7 @@ class ForgotVerifyPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.confirmPwdVisibility
+                  icon: !state.confirmPwdVisibility
                       ? const MyAssetImage(
                           Assets.authPasswordHide,
                           width: 22.5,

+ 4 - 4
packages/cpt_auth/lib/modules/forgot_verify/forgot_verify_view_model.dart

@@ -86,8 +86,8 @@ class ForgotVerifyViewModel extends _$ForgotVerifyViewModel with DioCancelableMi
     //执行密码登录
     final result = await _authRepository.forgotPassword(
       smsCode: code,
-      countryCode: AppConstant.countryCode,
-      phone: phone,
+      countryCode: Utils.getMobileCode(phone ?? ""),
+      phone: Utils.getRealMobile(phone ?? ""),
       password: password,
       confirmPassword: confirmPassword,
       cancelToken: cancelToken,
@@ -136,8 +136,8 @@ class ForgotVerifyViewModel extends _$ForgotVerifyViewModel with DioCancelableMi
   /// 调用接口发送短信验证码
   void sendSMS(String phone, String? key, String? code) async {
     final result = await _authRepository.sendSMS(
-      countryCode: AppConstant.countryCode,
-      phone: phone,
+      countryCode: Utils.getMobileCode(phone ?? ""),
+      phone: Utils.getRealMobile(phone ?? ""),
       captchaKey: key,
       captchaValue: code,
       cancelToken: cancelToken,

+ 21 - 19
packages/cpt_auth/lib/modules/sign_up/sign_up_page.dart

@@ -6,13 +6,13 @@ import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:plugin_basic/dialog/country_code_selecter.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_field.dart';
-import 'package:widgets/my_text_view.dart';
 import 'package:widgets/widget_export.dart';
 
 import '../../router/page/auth_page_router.dart';
@@ -105,26 +105,21 @@ class SignUpPage extends HookConsumerWidget {
                 mainAxisSize: MainAxisSize.max,
                 crossAxisAlignment: CrossAxisAlignment.center,
                 children: [
-                  const MyAssetImage(
-                    Assets.authCountrySg,
-                    width: 45,
-                    height: 30,
-                  ),
-                  MyTextView(
-                    "+65",
-                    textColor: context.appColors.textBlack,
-                    fontSize: 18.5,
-                    marginLeft: 15,
-                    marginRight: 12,
-                    isFontMedium: true,
-                  ),
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    onChanged: (countryCode) {
+                      viewModel.saveCountryCode(countryCode);
+                    },
+                  ).marginOnly(left: 15),
+
                   //电话输入框
                   _buildInputLayout(
                     context,
                     state,
                     "phone",
+                    fillBGColor: Colors.transparent,
                     textInputType: TextInputType.number,
-                    textInputAction: TextInputAction.next,
+                    textInputAction: TextInputAction.done,
                     errorText: state.phoneErrorText,
                     onSubmit: (formKey, value) {
                       state.formData[formKey]!['focusNode'].unfocus();
@@ -132,7 +127,12 @@ class SignUpPage extends HookConsumerWidget {
                     },
                   ).expanded(),
                 ],
-              ).marginOnly(top: 15),
+              )
+                  .decorated(
+                color: context.appColors.authFiledBG,
+                borderRadius: BorderRadius.circular(5.0),
+              )
+                  .marginOnly(top: 15),
 
               // 表单 - 重置密码
               _buildInputLayout(
@@ -147,7 +147,7 @@ class SignUpPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.pwdVisibility
+                  icon: !state.pwdVisibility
                       ? const MyAssetImage(
                           Assets.authPasswordHide,
                           width: 22.5,
@@ -180,7 +180,7 @@ class SignUpPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.confirmPwdVisibility
+                  icon: !state.confirmPwdVisibility
                       ? const MyAssetImage(
                           Assets.authPasswordHide,
                           width: 22.5,
@@ -219,6 +219,7 @@ class SignUpPage extends HookConsumerWidget {
                 children: [
                   MyAssetImage(
                     state.isAgreeTerms ? Assets.baseServiceCheckBoxChecked : Assets.baseServiceCheckBoxUncheck,
+                    color: state.isAgreeTerms ? context.appColors.textPrimary : Colors.transparent,
                     width: 15.5,
                     height: 15.5,
                   ).onTap(viewModel.switchAgreeTerms, padding: 10),
@@ -259,6 +260,7 @@ class SignUpPage extends HookConsumerWidget {
     Widget? rightWidget, //右侧的布局
     TextInputType textInputType = TextInputType.text,
     String? errorText,
+    Color? fillBGColor,
     bool obscureText = false,
     TextInputAction textInputAction = TextInputAction.done,
     Function? onSubmit,
@@ -266,7 +268,7 @@ class SignUpPage extends HookConsumerWidget {
     return IgnoreKeyboardDismiss(
       child: MyTextField(
         key,
-        fillBackgroundColor: context.appColors.authFiledBG,
+        fillBackgroundColor: fillBGColor ?? context.appColors.authFiledBG,
         state.formData[key]!['value'],
         hintText: state.formData[key]!['hintText'],
         hintStyle: TextStyle(

+ 5 - 1
packages/cpt_auth/lib/modules/sign_up/sign_up_state.dart

@@ -13,6 +13,8 @@ class SignUpState {
   String? passwordErrorText;
   String? confirmPasswordErrorText;
 
+  String? countryCode;
+
   //是否明文展示密码
   bool pwdVisibility;
 
@@ -33,6 +35,7 @@ class SignUpState {
     this.phoneErrorText,
     this.passwordErrorText,
     this.confirmPasswordErrorText,
+    this.countryCode,
   }) : formData = formData ??
             {
               'first_name': {
@@ -86,6 +89,7 @@ class SignUpState {
     String? phoneErrorText,
     String? passwordErrorText,
     String? confirmPasswordErrorText,
+    String? countryCode,
     bool? pwdVisibility,
     bool? confirmPwdVisibility,
     bool? isAgreeTerms,
@@ -101,7 +105,7 @@ class SignUpState {
       phoneErrorText: phoneErrorText,
       passwordErrorText: passwordErrorText,
       confirmPasswordErrorText: confirmPasswordErrorText,
+      countryCode: countryCode ?? this.countryCode,
     );
   }
-
 }

+ 8 - 1
packages/cpt_auth/lib/modules/sign_up/sign_up_view_model.dart

@@ -110,7 +110,7 @@ class SignUpViewModel extends _$SignUpViewModel {
             firstName: firstName,
             lastName: lastName,
             email: email,
-            phone: phone,
+            phone: "${state.countryCode}$phone",
             password: password,
             confirmPassword: confirmPassword,
             verifyKey: key,
@@ -209,4 +209,11 @@ class SignUpViewModel extends _$SignUpViewModel {
 
     Log.d("SignUpViewModel 销毁 onDispose");
   }
+
+  //保存当前选择的国家区号
+  void saveCountryCode(String? countryCode) {
+    state = state.copyWith(countryCode: countryCode);
+    Log.d("saveCountryCode:${state.countryCode}");
+  }
+
 }

+ 6 - 6
packages/cpt_auth/lib/modules/sing_up_verify/sign_up_verify_page.dart

@@ -21,7 +21,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
   final String firstName;
   final String lastName;
   final String email;
-  final String phone;
+  final String fullPhone;
   final String password;
   final String confirmPassword;
   final String? verifyKey;
@@ -32,7 +32,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
     required this.firstName,
     required this.lastName,
     required this.email,
-    required this.phone,
+    required this.fullPhone,
     required this.password,
     required this.confirmPassword,
     required this.verifyKey,
@@ -70,7 +70,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
     useEffect(() {
       Future.microtask(() {
         //默认进来就发短信
-        viewModel.sendSMS(phone, verifyKey, verifyCode);
+        viewModel.sendSMS(fullPhone, verifyKey, verifyCode);
       });
       return () {
       };
@@ -134,7 +134,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
                       firstName: firstName,
                       lastName: lastName,
                       email: email,
-                      phone: phone,
+                      fullPhone: fullPhone,
                       password: password,
                       confirmPassword: confirmPassword,
                       smsCode: pin,
@@ -169,7 +169,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
               MyButton(
                 onPressed: () {
                   if (!state.isCounting) {
-                    viewModel.showVerifyCodedDialog(phone);
+                    viewModel.showVerifyCodedDialog(fullPhone);
                   }
                 },
                 text: state.isCounting ? "${state.countdownTime} s" : S.current.resend_code,
@@ -212,7 +212,7 @@ class SignUpVerifyPage extends HookConsumerWidget {
                     firstName: firstName,
                     lastName: lastName,
                     email: email,
-                    phone: phone,
+                    fullPhone: fullPhone,
                     password: password,
                     confirmPassword: confirmPassword,
                     smsCode: smsCode,

+ 8 - 9
packages/cpt_auth/lib/modules/sing_up_verify/sign_up_verify_view_model.dart

@@ -3,7 +3,6 @@ import 'dart:async';
 import 'package:cpt_auth/modules/sing_up_success/sign_up_success_page.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:domain/repository/auth_repository.dart';
-import 'package:plugin_basic/constants/app_constant.dart';
 import 'package:plugin_basic/dialog/verify_code_dialog.dart';
 import 'package:plugin_basic/provider/user_config/user_config_service.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
@@ -37,7 +36,7 @@ class SignUpVerifyViewModel extends _$SignUpVerifyViewModel {
     required String firstName,
     required String lastName,
     required String email,
-    required String phone,
+    required String fullPhone,
     required String password,
     required String confirmPassword,
     required String? smsCode,
@@ -51,8 +50,8 @@ class SignUpVerifyViewModel extends _$SignUpVerifyViewModel {
       firstName: firstName,
       lastName: lastName,
       email: email,
-      countryCode: AppConstant.countryCode,
-      phone: phone,
+      countryCode: Utils.getMobileCode(fullPhone),
+      phone: Utils.getRealMobile(fullPhone),
       password: password,
       confirmPassword: confirmPassword,
       smsCode: smsCode,
@@ -77,23 +76,23 @@ class SignUpVerifyViewModel extends _$SignUpVerifyViewModel {
   }
 
   //展示验证码的弹窗
-  showVerifyCodedDialog(String phone) {
+  showVerifyCodedDialog(String fullPhone) {
     DialogEngine.show(
       onDismiss: () {},
       widget: VerifyCodeDialog(
         confirmAction: (key, code) {
           //发送短信验证码
-          sendSMS(phone, key, code);
+          sendSMS(fullPhone, key, code);
         },
       ),
     );
   }
 
   /// 调用接口发送短信验证码
-  void sendSMS(String phone, String? key, String? code) async {
+  void sendSMS(String fullPhone, String? key, String? code) async {
     final result = await authRepository.sendSMS(
-      countryCode: AppConstant.countryCode,
-      phone: phone,
+      countryCode: Utils.getMobileCode(fullPhone),
+      phone: Utils.getRealMobile(fullPhone),
       captchaKey: key,
       captchaValue: code,
     );

+ 1 - 1
packages/cpt_auth/lib/router/page/auth_page_router.gr.dart

@@ -84,7 +84,7 @@ abstract class _$AuthPageRouter extends RootStackRouter {
           firstName: args.firstName,
           lastName: args.lastName,
           email: args.email,
-          phone: args.phone,
+          fullPhone: args.phone,
           password: args.password,
           confirmPassword: args.confirmPassword,
           verifyKey: args.verifyKey,

+ 65 - 64
packages/cpt_community/lib/components/garage_card.dart

@@ -24,7 +24,6 @@ import '../modules/garage/for_sale/for_sale_vm.dart';
 // 'publish_time': 'June 17,2016 at 7:23 p.m.',
 // 'publisher_avator': Assets.communityCamera,'
 
-
 // 定义一个 使用场景的 枚举
 enum GarageCardUseType {
   // 默认
@@ -33,6 +32,7 @@ enum GarageCardUseType {
   myPostsForSale,
   myPostsForRent,
 }
+
 class GarageCard extends StatelessWidget {
   GarageCardUseType? useType;
   Map<String, dynamic> itemObj;
@@ -53,19 +53,18 @@ class GarageCard extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    List? card_resources = itemObj.getValue<List>("resources", [])?? [];
-    String card_img = card_resources.length>0? card_resources[0]:"";
+    List? card_resources = itemObj.getValue<List>("resources", []) ?? [];
+    String card_img = card_resources.length > 0 ? card_resources[0] : "";
     String card_title = itemObj.getValue("title", "");
     int card_price = itemObj.getValue("price", "");
     String card_created_at = itemObj.getValue("created_at", "");
-    Map<String, dynamic>? card_account = itemObj.getValue<Map<String,dynamic>>("account", null);
-    String card_avatar = card_account?['avatar']?? "";
-    String card_publish_name = card_account?['name']?? "";
+    Map<String, dynamic>? card_account = itemObj.getValue<Map<String, dynamic>>("account", null);
+    String card_avatar = card_account?['avatar'] ?? "";
+    String card_publish_name = card_account?['name'] ?? "";
     bool card_liked = itemObj.getValue("liked", false);
     int card_likes_count = itemObj.getValue("likes_count", 0);
-    return SizedBox(
-      height: cardHeight!,
-      child: Column(
+    return Column(
+        mainAxisSize: MainAxisSize.max,
         children: [
           // 图片
           Row(
@@ -74,7 +73,10 @@ class GarageCard extends StatelessWidget {
             children: [
               Expanded(
                 child: ClipRRect(
-                  borderRadius: const BorderRadius.only(topLeft: Radius.circular(8), topRight: Radius.circular(8),),
+                  borderRadius: const BorderRadius.only(
+                    topLeft: Radius.circular(8),
+                    topRight: Radius.circular(8),
+                  ),
                   child: MyLoadImage(
                     card_img,
                     width: 166.5,
@@ -86,9 +88,10 @@ class GarageCard extends StatelessWidget {
               ),
             ],
           ),
+
           // 标题
           Padding(
-            padding: const EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 10),
+            padding: const EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 5),
             child: Row(
               mainAxisAlignment: MainAxisAlignment.center,
               children: [
@@ -106,9 +109,10 @@ class GarageCard extends StatelessWidget {
               ],
             ),
           ),
+
           // 价格 及 收藏
           Padding(
-            padding: const EdgeInsets.only(left: 10, right: 10,top: 0, bottom: 0),
+            padding: const EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 0),
             child: Row(
               mainAxisAlignment: MainAxisAlignment.spaceAround,
               crossAxisAlignment: CrossAxisAlignment.center,
@@ -119,28 +123,30 @@ class GarageCard extends StatelessWidget {
                     maxLines: 1,
                     isTextEllipsis: true,
                     textAlign: TextAlign.start,
-                    textColor: ColorUtils.string2Color('#4161D0'),
+                    textColor: AppColorsTheme.colorPrimary,
                     fontSize: 18,
                     isFontMedium: true,
                   ),
                 ),
                 // 动态的 收藏数
                 CollectionWidget(
-                    collectionNum: card_likes_count,
-                    isCollection: card_liked,
-                    onClickColleciotn: onClickColleciotn,
+                  collectionNum: card_likes_count,
+                  isCollection: card_liked,
+                  onClickColleciotn: onClickColleciotn,
                 ),
               ],
             ),
           ),
+
           // 发布人信息
           Expanded(
             child: Padding(
-              padding: EdgeInsets.only(left: (useType == GarageCardUseType.forSale || useType == GarageCardUseType.forRent)?10:0, right: 10, bottom: 10.5),
-              child: Row(
-                mainAxisAlignment: MainAxisAlignment.spaceAround,
-                crossAxisAlignment: CrossAxisAlignment.center,
-                children: [
+                padding: EdgeInsets.only(
+                  left: (useType == GarageCardUseType.forSale || useType == GarageCardUseType.forRent) ? 10 : 0,
+                  right: 10,
+                  bottom: (useType == GarageCardUseType.forSale || useType == GarageCardUseType.forRent) ? 10.5 :0,
+                ),
+                child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.center, children: [
                   if (useType == GarageCardUseType.forSale || useType == GarageCardUseType.forRent)
                     MyLoadImage(
                       card_avatar,
@@ -151,11 +157,11 @@ class GarageCard extends StatelessWidget {
                   else
                     const SizedBox.shrink(),
                   Expanded(
-                    child: Column(
-                      mainAxisAlignment: MainAxisAlignment.center,
-                      crossAxisAlignment: CrossAxisAlignment.start,
-                      mainAxisSize: MainAxisSize.min,
-                      children: [
+                      child: Column(
+                          mainAxisAlignment: MainAxisAlignment.center,
+                          crossAxisAlignment: CrossAxisAlignment.start,
+                          mainAxisSize: MainAxisSize.min,
+                          children: [
                         if (useType == GarageCardUseType.forSale || useType == GarageCardUseType.forRent)
                           MyTextView(
                             card_publish_name,
@@ -175,51 +181,46 @@ class GarageCard extends StatelessWidget {
                           isTextEllipsis: true,
                           textAlign: TextAlign.start,
                           marginLeft: 13,
-                          marginTop: 5,
+                          marginTop: 2.5,
+                          marginBottom: 2.5,
                           fontSize: 10,
                           textColor: context.appColors.textBlack,
                           isFontRegular: true,
                         ),
-                      ]
-                    )
-                  ),
-                ]
-              )
-            ),
+                      ])),
+                ])),
           )
         ],
-      ),
-    );
+      ).constrained(height: cardHeight);
+
   }
 }
 
-
-
 class CollectionWidget extends HookConsumerWidget {
   int collectionNum = 0;
   bool isCollection = false;
   final Function(dynamic)? onClickColleciotn;
+
   CollectionWidget({
     Key? key,
     required this.collectionNum,
     required this.isCollection,
     this.onClickColleciotn,
   }) : super(key: key);
+
   @override
   Widget build(BuildContext context, WidgetRef ref) {
     final collectionNumState = useState(collectionNum);
     final isCollectionState = useState(isCollection);
     return Container(
-      width: 60,
-      height: 30,
-      alignment: Alignment.center,
-      // decoration: BoxDecoration(
-      //   color: ColorUtils.string2Color('#E5E5E5'),
-      //   borderRadius: BorderRadius.circular(15),
-      // ),
-      child: Row(
-        mainAxisAlignment: MainAxisAlignment.center,
-        children: [
+        width: 60,
+        height: 30,
+        alignment: Alignment.center,
+        // decoration: BoxDecoration(
+        //   color: ColorUtils.string2Color('#E5E5E5'),
+        //   borderRadius: BorderRadius.circular(15),
+        // ),
+        child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
           MyTextView(
             '${collectionNumState.value}',
             textColor: context.appColors.textBlack,
@@ -228,26 +229,26 @@ class CollectionWidget extends HookConsumerWidget {
             marginRight: 7,
           ),
           MyLoadImage(
-            isCollectionState.value? Assets.communityLikeActive: Assets.communityLike,
+            isCollectionState.value ? Assets.communityLikeActive : Assets.communityLike,
             width: 14.1,
             height: 14,
           )
         ]
-        // 点击 收餐/取消收藏
-    ).onTap(() async{
-        // Log.d("点击了收藏按钮  ${isCollectionState.value}");
-        // ToastEngine.show("点击了收藏按钮 ${isCollectionState.value}");
-        final result = await onClickColleciotn?.call(isCollectionState.value);
-        if(result !=null && result){
-          isCollectionState.value = !isCollectionState.value;
-          collectionNumState.value = (collectionNumState.value + (isCollectionState.value? 1: -1))<0? 0: (collectionNumState.value + (isCollectionState.value? 1: -1));
-          if(isCollectionState.value){
-            // ToastEngine.show("Collect Success");
-          }else {
-            // ToastEngine.show("Cancel Collect Success");
+            // 点击 收餐/取消收藏
+            ).onTap(() async {
+          // Log.d("点击了收藏按钮  ${isCollectionState.value}");
+          // ToastEngine.show("点击了收藏按钮 ${isCollectionState.value}");
+          final result = await onClickColleciotn?.call(isCollectionState.value);
+          if (result != null && result) {
+            isCollectionState.value = !isCollectionState.value;
+            collectionNumState.value =
+                (collectionNumState.value + (isCollectionState.value ? 1 : -1)) < 0 ? 0 : (collectionNumState.value + (isCollectionState.value ? 1 : -1));
+            if (isCollectionState.value) {
+              // ToastEngine.show("Collect Success");
+            } else {
+              // ToastEngine.show("Cancel Collect Success");
+            }
           }
-        }
-      })
-    );
+        }));
   }
-}
+}

+ 46 - 44
packages/cpt_community/lib/components/newsfeed_card_footer.dart

@@ -1,5 +1,6 @@
 import 'package:cpt_community/components/newfeed_card_header.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
@@ -11,7 +12,6 @@ import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/my_like_button.dart';
 
-
 import '../modules/community/community_page.dart';
 
 // 'id':1,
@@ -35,7 +35,7 @@ class NewsFeedCardFooter extends HookConsumerWidget {
 
   NewsFeedCardFooter({
     Key? key,
-     GlobalKey<MyLikeButtonState>? likeButtonKey,
+    GlobalKey<MyLikeButtonState>? likeButtonKey,
     required this.isLike,
     this.onLike,
     this.likes_count = 0,
@@ -43,24 +43,20 @@ class NewsFeedCardFooter extends HookConsumerWidget {
     this.onComment,
     this.onShare,
     this.showShare = false,
-  })
-  : likeButtonKey = likeButtonKey ?? GlobalKey<MyLikeButtonState>(),
-         super(key: key);
+  })  : likeButtonKey = likeButtonKey ?? GlobalKey<MyLikeButtonState>(),
+        super(key: key);
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final _isLike =useState(isLike);
-    final _likes_count =useState(likes_count);
-    final _comments_count =useState(comments_count);
+    final _isLike = useState(isLike);
+    final _likes_count = useState(likes_count);
+    final _comments_count = useState(comments_count);
 
     return Container(
-      height: 40,
-      width: double.infinity,
-      // padding: const EdgeInsets.symmetric(horizontal: 16),
-      child: Row(
-        mainAxisAlignment: MainAxisAlignment.spaceBetween,
-        crossAxisAlignment: CrossAxisAlignment.center,
-        children: [
+        height: 40,
+        width: double.infinity,
+        // padding: const EdgeInsets.symmetric(horizontal: 16),
+        child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [
           Expanded(
             child: Container(
               padding: const EdgeInsets.all(10),
@@ -78,7 +74,7 @@ class NewsFeedCardFooter extends HookConsumerWidget {
                   ),
                   // 动态的
                   MyTextView(
-                    'Like (${_likes_count.value})',
+                    S.current.like_count(_likes_count.value?.toString() ?? "0"),
                     textColor: ColorUtils.string2Color('#767676'),
                     fontSize: 14,
                     isFontRegular: true,
@@ -87,7 +83,7 @@ class NewsFeedCardFooter extends HookConsumerWidget {
                   )
                 ],
               ),
-            ).onTap((){
+            ).onTap(() {
               final state = likeButtonKey.currentState;
               state?.triggerTap();
             }),
@@ -98,9 +94,13 @@ class NewsFeedCardFooter extends HookConsumerWidget {
               child: Row(
                 mainAxisAlignment: MainAxisAlignment.center,
                 children: [
-                  const MyAssetImage(Assets.communityComments, width: 16,height: 16,),
+                  const MyAssetImage(
+                    Assets.communityComments,
+                    width: 16,
+                    height: 16,
+                  ),
                   MyTextView(
-                    'Comments ($comments_count)',
+                    S.current.comment_count(comments_count?.toString() ?? "0"),
                     textColor: ColorUtils.string2Color('#767676'),
                     fontSize: 14,
                     isFontRegular: true,
@@ -109,37 +109,39 @@ class NewsFeedCardFooter extends HookConsumerWidget {
                   ),
                 ],
               ),
-            ).onTap((){
+            ).onTap(() {
               // Log.d("点击了comments   ${tabsRouterKey.currentState?.controller?.activeIndex}");
               // tabsRouterKey.currentState?.controller?.setActiveIndex(2);
               onComment?.call();
             }),
           ),
-          if(showShare)
+          if (showShare)
             Expanded(
               child: Container(
-              padding: const EdgeInsets.all(8),
-              child: Row(
-                mainAxisAlignment: MainAxisAlignment.center,
-                children: [
-                  const MyAssetImage(Assets.communityShare, width: 16,height: 16,),
-                  MyTextView(
-                    'Share',
-                    textColor: ColorUtils.string2Color('#767676'),
-                    fontSize: 14,
-                    isFontRegular: true,
-                    textAlign: TextAlign.left,
-                    marginLeft: 8,
-                  ),
-                ],
-              ),
-                        ).onTap((){
-              Log.d("点击了share");
-              onShare?.call();
-                        }),
+                padding: const EdgeInsets.all(8),
+                child: Row(
+                  mainAxisAlignment: MainAxisAlignment.center,
+                  children: [
+                    const MyAssetImage(
+                      Assets.communityShare,
+                      width: 16,
+                      height: 16,
+                    ),
+                    MyTextView(
+                      S.current.share,
+                      textColor: ColorUtils.string2Color('#767676'),
+                      fontSize: 14,
+                      isFontRegular: true,
+                      textAlign: TextAlign.left,
+                      marginLeft: 8,
+                    ),
+                  ],
+                ),
+              ).onTap(() {
+                Log.d("点击了share");
+                onShare?.call();
+              }),
             ),
-        ]
-      )
-    );
+        ]));
   }
-}
+}

+ 4 - 3
packages/cpt_community/lib/modules/community/community_page.dart

@@ -1,5 +1,6 @@
 
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -248,7 +249,7 @@ class CommunityPage extends HookConsumerWidget with WidgetsBindingObserver {
                     MyTextView(
                       item['title'],
                       fontSize: 15,
-                      textColor: index == curTagIdx ? ColorUtils.string2Color('#4161D0'): context.appColors.textBlack,
+                      textColor: index == curTagIdx ? context.appColors.textPrimary: context.appColors.textBlack,
                       textAlign: TextAlign.center,
                       isFontMedium: true,
                     ),
@@ -324,7 +325,7 @@ class CommunityPage extends HookConsumerWidget with WidgetsBindingObserver {
               ),
               Expanded(
                 child: MyTextView(
-                  "What’s on your mind?",
+                  S.current.what_on_your_mind,
                   textColor: context.appColors.textBlack,
                   fontSize: 15,
                   marginLeft: 15,
@@ -365,7 +366,7 @@ class CommunityPage extends HookConsumerWidget with WidgetsBindingObserver {
               ),
               Expanded(
                 child: MyTextView(
-                  "Sell Item",
+                  S.current.sell_item,
                   textColor: context.appColors.textBlack,
                   fontSize: 15,
                   marginLeft: 15,

+ 29 - 27
packages/cpt_community/lib/modules/community/community_state.dart

@@ -1,20 +1,19 @@
 import 'package:cpt_community/modules/community/community_page.dart';
 import 'package:cs_resources/generated/assets.dart';
-
+import 'package:cs_resources/generated/l10n.dart';
 
 class CommunityVmState {
   List<Map<String, dynamic>>? topSectionsData;
   List<String>? newsFeedTabsList;
   List<String>? garageSaleTabsList;
   List<Map<String, dynamic>>? garageCategoryList = []; // garageCategoryList
-  int currentCategoryIdx = 0;   // 0: news feed, 1: garage sale
+  int currentCategoryIdx = 0; // 0: news feed, 1: garage sale
   int currentPageViewIdx = 0;
   int lastNewsfeedTabIdx = 0; // 上一次newsfeed 的 tabIdx
   int lastGarageTabIdx = 0; // 上一次garagesale 的 tabIdx
   dynamic? tabsRouter;
   dynamic? pageController;
 
-
   CommunityVmState({
     List<Map<String, dynamic>>? topSectionsData,
     required this.currentPageViewIdx,
@@ -26,29 +25,32 @@ class CommunityVmState {
     List<Map<String, dynamic>>? garageCategoryList,
     this.tabsRouter,
     this.pageController,
-  }) : topSectionsData = topSectionsData?? [
-    {
-      "title": "News Feed",
-      "icon": Assets.communityNews,
-    },
-    {
-      "title": "Garage Sale",
-      "icon": Assets.communityGarageSale,
-    },
-  ],
-        currentCategoryIdx = currentCategoryIdx?? 0,
-        lastGarageTabIdx = lastGarageTabIdx?? 0,
-        lastNewsfeedTabIdx = lastNewsfeedTabIdx?? 0,
-  newsFeedTabsList = newsFeedTabsList?? [
-    "News",
-    "Following",
-
-    "For You",
-  ],
-  garageSaleTabsList = garageSaleTabsList?? [
-    "For Sale",
-    "For Rent",
-  ], garageCategoryList = garageCategoryList?? [];
+  })  : topSectionsData = topSectionsData ??
+            [
+              {
+                "title": S.current.news_feed,
+                "icon": Assets.communityNews,
+              },
+              {
+                "title": S.current.garage_sale,
+                "icon": Assets.communityGarageSale,
+              },
+            ],
+        currentCategoryIdx = currentCategoryIdx ?? 0,
+        lastGarageTabIdx = lastGarageTabIdx ?? 0,
+        lastNewsfeedTabIdx = lastNewsfeedTabIdx ?? 0,
+        newsFeedTabsList = newsFeedTabsList ??
+            [
+              S.current.newsfeed_news,
+              S.current.newsfeed_following,
+              S.current.for_you,
+            ],
+        garageSaleTabsList = garageSaleTabsList ??
+            [
+              S.current.for_sale,
+              S.current.for_rent,
+            ],
+        garageCategoryList = garageCategoryList ?? [];
 
   CommunityVmState copyWith({
     List<Map<String, dynamic>>? topSectionsData,
@@ -75,4 +77,4 @@ class CommunityVmState {
       pageController: pageController ?? this.pageController,
     );
   }
-}
+}

+ 8 - 35
packages/cpt_community/lib/modules/community/community_vm.dart

@@ -6,6 +6,7 @@ import 'package:cpt_community/respository/common_garage.dart';
 import 'package:cpt_community/respository/common_newsfeed.dart';
 import 'package:cpt_community/router/page/community_page_router.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
@@ -55,13 +56,13 @@ class CommunityVm extends _$CommunityVm {
 
   CommunityVmState initState() {
     List<String> newsFeedTabsList = [
-      "News",
-      "Following",
-      "For You",
+      S.current.newsfeed_news,
+      S.current.newsfeed_following,
+      S.current.for_you,
     ];
     List<String> garageSaleTabsList = [
-      "For Sale",
-      "For Rent",
+      S.current.for_sale,
+      S.current.for_rent,
     ];
 
     List<String> COMMUNITY_TABS_LIST = [...newsFeedTabsList];
@@ -211,34 +212,6 @@ class CommunityVm extends _$CommunityVm {
   // 获取garage sale 分类选项
   Future<List<Map<String, dynamic>>> getGarageSaleCategoryOptions() async{
     List<Map<String, dynamic>> garageCategoryList = [
-      // {
-      //   'id': '1',
-      //   'name': 'Kids',
-      // },
-      // {
-      //   'id': '2',
-      //   'name': 'Homeware',
-      // },
-      // {
-      //   'id': '3',
-      //   'name': 'Fashion',
-      // },
-      // {
-      //   'id': '4',
-      //   'name': 'Electronics',
-      // },
-      // {
-      //   'id': '5',
-      //   'name': 'Sports',
-      // },
-      // {
-      //   'id': '6',
-      //   'name': 'Furniture',
-      // },
-      // {
-      //   'id': '7',
-      //   'name': 'Others',
-      // },
     ];
     // 获取分类列表
     try {
@@ -287,12 +260,12 @@ class CommunityVm extends _$CommunityVm {
         position: DialogPosition.center,
         widget: AppCustomDialog(
           message: '',
-          title: 'Choose a Category',
+          title: S.current.choose_category,
           dialogWidth: MediaQuery.of(context).size.width * 0.8,
           // contentBoxMaxHeight: 350,
           // contentBoxMinHeight: 300,
           isShowConfirmBtn: garageCategoryList!.length > 0 ? true: false,
-          confirmTxt: "Ok",
+          confirmTxt: S.current.confirm,
           messageBuilder: (BuildContext context){
             return Container(
               color: context.appColors.textWhite,

+ 4 - 3
packages/cpt_community/lib/modules/community/following/following_page.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -177,13 +178,13 @@ class FollowingPage extends HookConsumerWidget {
                   height: 45.5,
                   alignment: Alignment.center,
                   // decoration: BoxDecoration(
-                  //   color:  ColorUtils.string2Color('#4161D0'),
+                  //   color:  context.appColors.textPrimary,
                   //   borderRadius: BorderRadius.circular(5),
                   // ),
                   child: MyButton(
-                    text: '+Follow',
+                    text: S.current.to_follow,
                     textColor: Colors.white,
-                    backgroundColor: ColorUtils.string2Color('#4161D0'),
+                    backgroundColor: context.appColors.textPrimary,
                     radius: 8,
                     minHeight: 27.5,
                     padding: const EdgeInsets.only(left: 5, right: 5,top:9,bottom:9),

+ 4 - 3
packages/cpt_community/lib/modules/community/foryou/foryou_page.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -184,13 +185,13 @@ class ForyouPage extends HookConsumerWidget {
                   height: 45.5,
                   alignment: Alignment.center,
                   // decoration: BoxDecoration(
-                  //   color:  ColorUtils.string2Color('#4161D0'),
+                  //   color:  context.appColors.textPrimary,
                   //   borderRadius: BorderRadius.circular(5),
                   // ),
                   child: MyButton(
-                    text: '+Follow',
+                    text: S.current.to_follow,
                     textColor: Colors.white,
-                    backgroundColor: ColorUtils.string2Color('#4161D0'),
+                    backgroundColor: context.appColors.textPrimary,
                     radius: 8,
                     minHeight: 27.5,
                     padding: const EdgeInsets.only(left: 5, right: 5,top:9,bottom:9),

+ 4 - 3
packages/cpt_community/lib/modules/community/news/news_page.dart

@@ -1,4 +1,5 @@
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -191,17 +192,17 @@ class NewsPage extends HookConsumerWidget {
                   height: 50.5,
                   alignment: Alignment.center,
                   // decoration: BoxDecoration(
-                  //   color:  ColorUtils.string2Color('#4161D0'),
+                  //   color:  context.appColors.textPrimary,
                   //   borderRadius: BorderRadius.circular(5),
                   // ),
                   child: HookBuilder(
                     builder: (context) {
                       final isFollowedState = useState<bool>(card_followed);
                       return MyButton(
-                        text: isFollowedState.value ? 'Followed': '+Follow',
+                        text: isFollowedState.value ? S.current.followed:S.current.to_follow,
                         textColor: isFollowedState.value ?  context.appColors.disEnableGray: context.appColors.textWhite,
                         disabledTextColor: context.appColors.disEnableGray,
-                        backgroundColor: isFollowedState.value ? Colors.transparent : ColorUtils.string2Color('#4161D0'),
+                        backgroundColor: isFollowedState.value ? Colors.transparent : context.appColors.textPrimary,
                         side: BorderSide(color: !isFollowedState.value ? Colors.transparent : context.appColors.disEnableGray, width: 0.5),
                         radius: 8,
                         minHeight: 27.5,

+ 20 - 11
packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_page.dart

@@ -1,5 +1,6 @@
 import 'package:cpt_community/router/page/community_page_router.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:domain/entity/newsfeed_detail_entity.dart';
 import 'package:flutter/material.dart';
@@ -66,7 +67,7 @@ class NewsfeedDetailPage extends HookConsumerWidget {
     return Scaffold(
       appBar: MyAppBar.appBar(
         context,
-        "News Feed Detail",
+        S.current.news_feed_detail,
         backgroundColor: context.appColors.backgroundWhite,
       ),
       backgroundColor: ColorUtils.string2Color("#F2F3F6"),
@@ -182,17 +183,17 @@ class NewsfeedDetailPage extends HookConsumerWidget {
               height: 45.5,
               alignment: Alignment.center,
               // decoration: BoxDecoration(
-              //   color:  ColorUtils.string2Color('#4161D0'),
+              //   color:  context.appColors.textPrimary,
               //   borderRadius: BorderRadius.circular(5),
               // ),
               child: HookBuilder(
                   builder: (context) {
                     final isFollowedState = useState<bool>(card_followed);
                     return MyButton(
-                      text: isFollowedState.value ? 'Followed': '+Follow',
+                      text: isFollowedState.value ?  S.current.followed:S.current.to_follow,
                       textColor: isFollowedState.value ?  context.appColors.disEnableGray: context.appColors.textWhite,
                       disabledTextColor: context.appColors.disEnableGray,
-                      backgroundColor: isFollowedState.value ? Colors.transparent : ColorUtils.string2Color('#4161D0'),
+                      backgroundColor: isFollowedState.value ? Colors.transparent : context.appColors.textPrimary,
                       side: BorderSide(color: !isFollowedState.value ? Colors.transparent : context.appColors.disEnableGray, width: 0.5),
                       radius: 8,
                       minHeight: 27.5,
@@ -251,9 +252,7 @@ class NewsfeedDetailPage extends HookConsumerWidget {
                       padding: const EdgeInsets.only(left: 15, right: 15,top: 14,bottom: 14),
                       child: Row(
                         children: [
-                          MyTextView('Comments', textColor: ColorUtils.string2Color("#2956B7"), fontSize: 15, isFontLight: true,),
-                          const SizedBox(width: 5,),
-                          MyTextView('(${commentCount})', textColor: ColorUtils.string2Color("#2956B7"), fontSize: 15, isFontLight: true,),
+                          MyTextView(S.current.comment_count(commentCount),  textColor: context.appColors.textPrimary, fontSize: 15, isFontLight: true,),
                         ]
                       )
                     )
@@ -380,7 +379,7 @@ class NewsfeedDetailPage extends HookConsumerWidget {
                     comment_name,
                     isFontRegular: true,
                     fontSize: 14,
-                    textColor: ColorUtils.string2Color('#2956B7'),
+                    textColor: context.appColors.textPrimary,
                     maxLines: 1,
                     isTextEllipsis: true,
                   ),
@@ -452,6 +451,8 @@ class NewsfeedDetailPage extends HookConsumerWidget {
                           alignment: Alignment.center,
                           padding: const EdgeInsets.only(left: 10,right: 10),
                           child: Wrap(
+                            alignment: WrapAlignment.center,
+                            runAlignment: WrapAlignment.center,
                             children: [
                               MyLikeButton(
                                 key: _likeButtonKey,
@@ -469,7 +470,7 @@ class NewsfeedDetailPage extends HookConsumerWidget {
                               const SizedBox(width: 10,),
 
                               MyTextView(
-                                "Like",
+                                S.current.like,
                                 textColor: context.appColors.whiteBG,
                                 fontSize: 14,
                                 isFontRegular: true,
@@ -489,18 +490,26 @@ class NewsfeedDetailPage extends HookConsumerWidget {
                       crossAxisAlignment: CrossAxisAlignment.center,
                       children: [
                         Container(
+                          height: 40,
                           alignment: Alignment.center,
                           padding: const EdgeInsets.only(left: 10,right: 10),
                           child: Wrap(
+                            // alignment: WrapAlignment.center,
+                            runAlignment: WrapAlignment.center,
                             children: [
-                              MyLoadImage(
+                              // MyLoadImage(
+                              //   Assets.communityNewsfeedDetailComment,
+                              //   width: 17.5,
+                              //   height: 16.5,
+                              // ),
+                              const MyAssetImage(
                                 Assets.communityNewsfeedDetailComment,
                                 width: 17.5,
                                 height: 16.5,
                               ),
                               const SizedBox(width: 10,),
                               MyTextView(
-                                "Comment",
+                                S.current.comment,
                                 textColor: context.appColors.whiteBG,
                                 fontSize: 14,
                                 isFontRegular: true,

+ 2 - 1
packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_state.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:domain/entity/newsfeed_detail_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:widgets/load_state_layout.dart';
@@ -23,7 +24,7 @@ class NewsfeedDetailState {
         commentFieldInfo = commentFieldInfo ?? {
     'value': '',
     'controller': TextEditingController(),
-    'hintText': 'Please enter your comment',
+    'hintText': S.current.enter_comment,
     'focusNode': FocusNode(),
     'obsecure': false,
   },

+ 3 - 2
packages/cpt_community/lib/modules/community/newsfeed_detail/newsfeed_detail_vm.dart

@@ -4,6 +4,7 @@ import 'package:cpt_community/modules/community/foryou/foryou_vm.dart';
 import 'package:cpt_community/modules/my_posts/my_posts_newsfeed/my_posts_newsfeed_vm.dart';
 import 'package:cpt_community/respository/common_newsfeed.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:domain/entity/newsfeed_detail_entity.dart';
 import 'package:flutter/cupertino.dart';
@@ -267,13 +268,13 @@ class NewsfeedDetailVm extends _$NewsfeedDetailVm {
   handlerCommentClick(BuildContext context, int newsfeedId, int to_user_id, String to_user_name, bool isReply ) async{
     Log.d("点击了评论按钮 newsfeedId:  $newsfeedId  to_user_id:  $to_user_id  to_user_name:  $to_user_name  isReply:  $isReply ");
 
-    String hintText = 'Please enter your comment';
+    String hintText = S.current.enter_comment;
     if(isReply){
       hintText = 'Reply to $to_user_name: ';
       // 修改对话框的 提示文字
     }else {
       to_user_id = 0; // 评论对象ID(默认传0)
-      String hintText = 'Please enter your comment';
+      String hintText = S.current.enter_comment;
     }
     state = state.copyWith(commentFieldInfo: {
       'value': '',

+ 2 - 2
packages/cpt_community/lib/modules/community/newsfeed_post/newsfeed_post_page.dart

@@ -39,7 +39,7 @@ class NewsfeedPostPage extends HookConsumerWidget {
     return Scaffold(
       appBar: MyAppBar.appBar(
         context,
-        "Create Post",
+        S.current.create_post,
         backgroundColor: context.appColors.backgroundWhite,
       ),
       backgroundColor: ColorUtils.string2Color("#F2F3F6"),
@@ -102,7 +102,7 @@ class NewsfeedPostPage extends HookConsumerWidget {
                   children: [
                     Expanded(
                       child: MyButton(
-                        text: "Submit",
+                        text: S.current.submit,
                         radius: 0,
                         minHeight: 50,
                         backgroundColor: context.appColors.textPrimary,

+ 2 - 1
packages/cpt_community/lib/modules/community/newsfeed_post/newsfeed_post_vm.dart

@@ -1,6 +1,7 @@
 
 import 'package:cpt_community/respository/common_newsfeed.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:plugin_basic/constants/app_constant.dart';
 import 'package:plugin_basic/provider/user_config/user_config_service.dart';
@@ -31,7 +32,7 @@ class NewsfeedPostVm extends _$NewsfeedPostVm {
           'mind': {
             'value': '',
             'controller': TextEditingController(),
-            'hintText': 'What\'s on your mind?',
+            'hintText': S.current.what_on_your_mind,
             'focusNode': FocusNode(),
             'obsecure': false,
           }

+ 4 - 3
packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_page.dart

@@ -1,6 +1,7 @@
 import 'package:cpt_community/modules/garage/garagesale_detail/garagesale_detail_vm.dart';
 import 'package:cpt_community/router/page/community_page_router.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:domain/entity/garage_sale_rent_detail_entity.dart';
 import 'package:domain/entity/garage_sale_rent_entity.dart';
@@ -44,7 +45,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
   Widget build(BuildContext context, WidgetRef ref) {
     final state = ref.watch(garagesaleDetailVmProvider);
     final vm = ref.read(garagesaleDetailVmProvider.notifier);
-    final String pageTitle = (type == 'forSale' || type == 'mineForSale') ? 'For Sale' :'For Rent';
+    final String pageTitle = (type == 'forSale' || type == 'mineForSale') ? S.current.for_sale :S.current.for_rent;
     GlobalKey _likeButtonKey = GlobalKey<MyLikeButtonState>();
 
     GarageSaleRentDetailEntity? detailInfo = state.datas?? null;
@@ -72,7 +73,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
         actions: [
           type=='mineForSale'||type=='mineForRent'?Center(
             child: MyTextView(
-              'Delete',
+              S.current.delete,
               textColor: context.appColors.redDefault,
               fontSize: 16,
               isFontMedium: true,
@@ -264,7 +265,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
 
     return Container(
       height: 50,
-      color: ColorUtils.string2Color('#4161D0'),
+      color: AppColorsTheme.colorPrimary,
       child: Row(
         mainAxisAlignment: MainAxisAlignment.center,
         children: [

+ 2 - 1
packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_vm.dart

@@ -2,6 +2,7 @@ import 'package:cpt_community/modules/garage/for_rent/for_rent_vm.dart';
 import 'package:cpt_community/modules/garage/garagesale_post/garagesale_post_vm.dart';
 import 'package:cpt_community/respository/common_garage.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:domain/entity/garage_sale_rent_detail_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:plugin_basic/basic_export.dart';
@@ -123,7 +124,7 @@ class GaragesaleDetailVm extends _$GaragesaleDetailVm {
   Future deleteMyGarageData(BuildContext? context, int id) async {
     DialogEngine.show(
       widget: AppDefaultDialog(
-        message: "Are you sure you want to delete?",
+        message: S.current.sure_del,
         confirmAction: () async {
           try {
             Map<String, dynamic> params = {

+ 7 - 7
packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_page.dart

@@ -44,7 +44,7 @@ class GaragesalePostPage extends HookConsumerWidget {
     final state = ref.watch(garagesalePostVmProvider);
 
     useEffect((){
-      WidgetsBinding.instance!.addPostFrameCallback((_) {
+      WidgetsBinding.instance.addPostFrameCallback((_) {
         vm.initData(
             type:type
         );
@@ -55,7 +55,7 @@ class GaragesalePostPage extends HookConsumerWidget {
     return Scaffold(
       appBar: MyAppBar.appBar(
         context,
-        (type==1 || type==2)?"Post New Item":"Edit",
+        (type==1 || type==2) ? S.current.post_new_item : S.current.edit,
         backgroundColor: context.appColors.backgroundWhite,
       ),
       backgroundColor: Colors.white,
@@ -85,7 +85,7 @@ class GaragesalePostPage extends HookConsumerWidget {
                                   crossAxisAlignment: CrossAxisAlignment.start,
                                   children: [
                                     FormRequireText(
-                                      text: "Title",
+                                      text: S.current.title,
                                       textColor: context.appColors.textBlack,
                                       fontSize: 17,
                                     ).marginOnly(bottom: 14.5),
@@ -112,7 +112,7 @@ class GaragesalePostPage extends HookConsumerWidget {
                                   crossAxisAlignment: CrossAxisAlignment.start,
                                   children: [
                                     FormRequireText(
-                                      text: "Contact Information",
+                                      text: S.current.contact_information,
                                       textColor: context.appColors.textBlack,
                                       fontSize: 17,
                                     ).marginOnly(bottom: 14.5),
@@ -152,7 +152,7 @@ class GaragesalePostPage extends HookConsumerWidget {
                                   crossAxisAlignment: CrossAxisAlignment.start,
                                   children: [
                                     FormRequireText(
-                                      text: "Price(\$)",
+                                      text: "${S.current.price}(\$)",
                                       textColor: context.appColors.textBlack,
                                       fontSize: 17,
                                     ).marginOnly(bottom: 14.5),
@@ -179,7 +179,7 @@ class GaragesalePostPage extends HookConsumerWidget {
                                 crossAxisAlignment: CrossAxisAlignment.start,
                                 children: [
                                   FormRequireText(
-                                    text: "Description",
+                                    text: S.current.description,
                                     textColor: context.appColors.textBlack,
                                     fontSize: 17,
                                   ).marginOnly(bottom: 14.5),
@@ -206,7 +206,7 @@ class GaragesalePostPage extends HookConsumerWidget {
                   children: [
                     Expanded(
                       child: MyButton(
-                        text: "Submit",
+                        text: S.current.submit,
                         radius: 0,
                         minHeight: 50,
                         backgroundColor: context.appColors.textPrimary,

+ 1 - 0
packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_state.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/cupertino.dart';
 
 class GaragesalePostPageState {

+ 1 - 0
packages/cpt_community/lib/modules/garage/garagesale_post/garagesale_post_vm.dart

@@ -475,6 +475,7 @@ class GaragesalePostVm extends _$GaragesalePostVm {
         contactValue: totalContactStr,
         imgList: state.imgList??[],
       );
+
       if(resResult.isSuccess){
         // 更新用户信息
         // UserConfigService.getInstance().refreshUserInfo();

+ 2 - 1
packages/cpt_community/lib/modules/my_following/components/item_following.dart

@@ -1,6 +1,7 @@
 import 'package:cpt_community/components/comments_dialog.dart';
 import 'package:cpt_community/modules/my_following/my_follow/my_follow_vm.dart';
 import 'package:cpt_community/modules/my_following/my_follower/my_follower_vm.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
@@ -65,7 +66,7 @@ class MyFollowingListItem extends StatelessWidget {
                 builder: (context, ref, child) {
                   final isFollow = useState<bool>(true);
                   return  MyButton(
-                    text: isFollow.value? 'Followed':'+Follow',
+                    text: isFollow.value? S.current.followed : S.current.to_follow,
                     onPressed: () async{
                       final vm = ref.read(itemFollowingVmProvider.notifier);
                       // todo 调用接口 然后更新状态

+ 2 - 1
packages/cpt_community/lib/modules/my_following/my_follow/my_follow_page.dart

@@ -1,4 +1,5 @@
 import 'package:cpt_community/modules/my_following/my_following_vm.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -125,7 +126,7 @@ class MyFollowPage extends HookConsumerWidget {
                             return Padding(
                               padding: const EdgeInsets.only(top: 10, bottom: 10, left: 10),
                               child: SearchAppBar(
-                                hintText: 'Search',
+                                hintText: S.current.search,
                                 onChanged: (String value){
                                   vm.handlerSearchChange(value);
                                 },

+ 2 - 1
packages/cpt_community/lib/modules/my_following/my_follower/my_follower_page.dart

@@ -1,4 +1,5 @@
 import 'package:cpt_community/modules/my_following/my_following_vm.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -125,7 +126,7 @@ class MyFollowerPage extends HookConsumerWidget {
                             return Padding(
                               padding: const EdgeInsets.only(top: 10, bottom: 10, left: 10),
                               child: SearchAppBar(
-                                hintText: 'Search',
+                                hintText: S.current.search,
                                 onChanged: (String value){
                                   vm.handlerSearchChange(value);
                                 },

+ 3 - 2
packages/cpt_community/lib/modules/my_following/my_following_page.dart

@@ -2,6 +2,7 @@
 import 'package:cpt_community/components/newsfeed_card_content.dart';
 import 'package:cpt_community/components/newsfeed_card_footer.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -85,13 +86,13 @@ class MyFollowingPage extends HookConsumerWidget {
       if(state.currentPageViewIdx == 0){
         return  state.followPageIsSearchBarStatus!? MyAppBar.searchAppBar(context, backgroundColor: context.appColors.backgroundWhite): MyAppBar.appBar(
           context,
-          state.currentPageViewIdx == 0 ? "My Follow" : "My Follower",
+          state.currentPageViewIdx == 0 ? S.current.my_follow : S.current.my_follower,
           backgroundColor: context.appColors.backgroundWhite,
         );
       }else {
         return state.followerPageIsSearchBarStatus!? MyAppBar.searchAppBar(context, backgroundColor: context.appColors.backgroundWhite): MyAppBar.appBar(
           context,
-          state.currentPageViewIdx == 0 ? "My Follow" : "My Follower",
+          state.currentPageViewIdx == 0 ? S.current.my_follow : S.current.my_follower,
           backgroundColor: context.appColors.backgroundWhite,
         );
       }

+ 1 - 1
packages/cpt_community/lib/modules/my_following/my_following_tabs.dart

@@ -15,7 +15,7 @@ import '../community/community_vm.dart';
 import 'my_following_vm.dart';
 
 class MyFollowingTabs extends HookConsumerWidget {
-  List tabsList;
+  List<String> tabsList;
   Widget? Function(BuildContext)? tabItemBuilder;
   dynamic? tabsRouter;
   void Function(int)? onClickAction;

+ 4 - 2
packages/cpt_community/lib/modules/my_following/tabs_data.dart

@@ -1,4 +1,6 @@
+import 'package:cs_resources/generated/l10n.dart';
+
 Map<String, dynamic> tabsNamesData = {
-  'Follow': 'Follow',
-  'Follower': 'Follower',
+  'Follow': S.current.follow,
+  'Follower': S.current.follower,
 };

+ 2 - 1
packages/cpt_community/lib/modules/my_posts/my_posts_page.dart

@@ -1,5 +1,6 @@
 import 'package:cpt_community/modules/my_posts/my_posts_vm.dart';
 import 'package:cpt_community/router/page/community_page_router.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -56,7 +57,7 @@ class MyPostsPage extends HookConsumerWidget {
     return Scaffold(
       appBar: MyAppBar.appBar(
         context,
-        "My Posts",
+        S.current.my_post,
         backgroundColor: context.appColors.backgroundWhite,
       ),
       backgroundColor: context.appColors.backgroundDefault,

+ 4 - 3
packages/cpt_community/lib/modules/my_posts/my_posts_vm.dart

@@ -1,4 +1,5 @@
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -34,17 +35,17 @@ class MyPostsVm extends _$MyPostsVm {
         tabsList: [
           {
             'code': 'newsFeed',
-            'title': 'News Feed',
+            'title': S.current.news_feed,
             'publish_num': 0,
           },
           {
             'code': 'forSale',
-            'title': 'For Sale',
+            'title': S.current.for_sale,
             'publish_num': 0,
           },
           {
             'code': 'forRent',
-            'title': 'For Rent',
+            'title': S.current.for_rent,
             'publish_num': 0,
           },
         ]

+ 3 - 1
packages/cpt_facility/lib/modules/book_confirm/book_confirm_page.dart

@@ -12,6 +12,7 @@ import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import '../../router/page/facility_page_router.dart';
 import '../booking/facility_booking_view_model.dart';
 
@@ -159,7 +160,7 @@ class BookConfirmPage extends HookConsumerWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径
@@ -185,6 +186,7 @@ class BookConfirmPage extends HookConsumerWidget {
                   iconPath,
                   width: iconWidth,
                   height: iconHeight,
+                  color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
                 ).marginOnly(right: 15),
                 Column(
                   mainAxisSize: MainAxisSize.min,

+ 9 - 2
packages/cpt_facility/lib/modules/booking/facility_booking_page.dart

@@ -20,6 +20,7 @@ import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/shatter/select_calendar/calendar_bottom_sheet.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import 'package:widgets/widget_export.dart';
 
 import '../../router/page/facility_page_router.dart';
@@ -65,10 +66,11 @@ class FacilityBookingPage extends HookConsumerWidget {
           //去设施小区的定位图片
           Visibility(
             visible: facilityEntity.mapResources.isNotEmpty,
-            child: const MyAssetImage(
+            child: MyAssetImage(
               Assets.facilityTitleLocationIcon,
               width: 44,
               height: 44,
+              color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
             ).marginOnly(right: 3).onTap(() {
               FacilityLocationPage.startInstance(context: context, imageUrls: facilityEntity.mapResources);
             }),
@@ -93,7 +95,12 @@ class FacilityBookingPage extends HookConsumerWidget {
                 marginLeft: 15,
                 isFontMedium: true,
               ).expanded(),
-              const MyAssetImage(Assets.facilityConfirmDateIcon, width: 22.5, height: 22.5).marginOnly(right: 10).onTap(() {
+              MyAssetImage(
+                Assets.facilityConfirmDateIcon,
+                width: 22.5,
+                height: 22.5,
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+              ).marginOnly(right: 10).onTap(() {
                 //日历日期选择器
                 _datePickerBottomSheet(context, ref);
               }, padding: 5),

+ 5 - 2
packages/cpt_facility/lib/modules/detail/facility_detail_page.dart

@@ -10,6 +10,7 @@ import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import '../../router/page/facility_page_router.dart';
 import 'facility_detail_view_model.dart';
 
@@ -134,10 +135,11 @@ class FacilityDetailPage extends HookConsumerWidget {
       child: Column(
         children: [
           //成功图片
-          const MyAssetImage(
+          MyAssetImage(
             Assets.facilityPaymentSuccessIcon,
             width: 54,
             height: 54,
+            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
           ).marginOnly(top: 11, bottom: 13),
 
           //支付成功
@@ -302,7 +304,7 @@ class FacilityDetailPage extends HookConsumerWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径
@@ -328,6 +330,7 @@ class FacilityDetailPage extends HookConsumerWidget {
                   iconPath,
                   width: iconWidth,
                   height: iconHeight,
+                  color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
                 ).marginOnly(right: 15),
                 Column(
                   mainAxisSize: MainAxisSize.min,

+ 2 - 2
packages/cpt_facility/lib/modules/facility/active/item_facility_active.dart

@@ -87,7 +87,7 @@ class FacilityActiveItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,
@@ -100,7 +100,7 @@ class FacilityActiveItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,

+ 4 - 2
packages/cpt_facility/lib/modules/facility/facility_page.dart

@@ -10,6 +10,7 @@ import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../../router/page/facility_page_router.dart';
 import 'facility_view_model.dart';
@@ -38,12 +39,13 @@ class FacilityPage extends HookConsumerWidget {
         backgroundColor: context.appColors.backgroundWhite,
         actions: [
           //去设施小区的定位图片
-          const MyAssetImage(
+          MyAssetImage(
             Assets.facilityQuestionIcon,
             width: 44,
             height: 44,
+            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
           ).marginOnly(right: 3).onTap(() {
-           ToastEngine.show("Question");
+            ToastEngine.show("Question");
           }),
         ],
       ),

+ 2 - 2
packages/cpt_facility/lib/modules/facility/history/item_facility_history.dart

@@ -87,7 +87,7 @@ class FacilityHistoryItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,
@@ -100,7 +100,7 @@ class FacilityHistoryItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,

+ 4 - 3
packages/cpt_form/lib/modules/form/apply/item_form_apply.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 ///  设施的Active的Item
 class FormApplyItem extends StatelessWidget {
@@ -34,10 +35,10 @@ class FormApplyItem extends StatelessWidget {
         children: [
           MyAssetImage(
             FormTypes.iconMap[item.typeId]?['icon_path'],
-              width: FormTypes.iconMap[item.typeId]?['width'],
-              height: FormTypes.iconMap[item.typeId]?['height'],
+            width: FormTypes.iconMap[item.typeId]?['width'],
+            height: FormTypes.iconMap[item.typeId]?['height'],
+            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
           ),
-
           MyTextView(
             FormTypes.iconMap[item.typeId]?['name'],
             marginLeft: 17,

+ 2 - 0
packages/cpt_form/lib/modules/form/approve/item_form_approve.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../form_types.dart';
 
@@ -38,6 +39,7 @@ class FormApproveItem extends StatelessWidget {
                 FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['icon_path'],
                 width: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['width'],
                 height: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['height'],
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
               ),
               Column(
                 crossAxisAlignment: CrossAxisAlignment.start,

+ 2 - 0
packages/cpt_form/lib/modules/form/not_approve/item_form_not_approve.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../form_types.dart';
 
@@ -39,6 +40,7 @@ class FormNotApproveItem extends StatelessWidget {
                 FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['icon_path'],
                 width: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['width'],
                 height: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['height'],
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
               ),
               Column(
                 crossAxisAlignment: CrossAxisAlignment.start,

+ 2 - 0
packages/cpt_form/lib/modules/form/submit/item_form_submit.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../form_types.dart';
 
@@ -38,6 +39,7 @@ class FormSubmitItem extends StatelessWidget {
                 FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['icon_path'],
                 width: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['width'],
                 height: FormTypes.iconMap[item.estateOnlineForm?.type?.id]?['height'],
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
               ),
               Column(
                 crossAxisAlignment: CrossAxisAlignment.start,

+ 2 - 2
packages/cpt_main/lib/modules/feedback/detail/feedback_detail_page.dart

@@ -91,7 +91,7 @@ class FeedbackDetailPage extends HookConsumerWidget {
                   borderRadius: BorderRadius.circular(6.0), // 圆角
                   boxShadow: [
                     BoxShadow(
-                      color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+                      color: context.appColors.itemBGShadow, // 阴影颜色
                       offset: const Offset(0, 3), // 阴影的偏移量
                       blurRadius: 8.0, // 模糊半径
                       spreadRadius: 3.0, // 扩散半径
@@ -164,7 +164,7 @@ class FeedbackDetailPage extends HookConsumerWidget {
             borderRadius: BorderRadius.circular(6.0), // 圆角
             boxShadow: [
               BoxShadow(
-                color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+                color: context.appColors.itemBGShadow, // 阴影颜色
                 offset: const Offset(0, 3), // 阴影的偏移量
                 blurRadius: 8.0, // 模糊半径
                 spreadRadius: 3.0, // 扩散半径

+ 8 - 2
packages/cpt_main/lib/modules/feedback/item_feedback.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 class FeedbackItem extends StatelessWidget {
   final int index;
@@ -26,7 +27,7 @@ class FeedbackItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径
@@ -38,7 +39,12 @@ class FeedbackItem extends StatelessWidget {
         children: [
           Row(
             children: [
-              const MyAssetImage(Assets.mainFeedbackItemIcon, width: 42.5, height: 44),
+               MyAssetImage(
+                Assets.mainFeedbackItemIcon,
+                width: 42.5,
+                height: 44,
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+              ),
               Column(
                 crossAxisAlignment: CrossAxisAlignment.start,
                 children: [

+ 229 - 169
packages/cpt_main/lib/modules/home/home_page.dart

@@ -2,8 +2,10 @@ import 'package:cpt_main/modules/home/home_state.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:cs_resources/theme/theme_config.dart';
 import 'package:domain/entity/home_list_entity.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter/src/widgets/framework.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
@@ -47,109 +49,168 @@ class HomePage extends HookConsumerWidget {
       };
     }, []);
 
-    return Scaffold(
-      //根据当前时间生成欢迎文本
-      appBar: MyAppBar.appBar(context, _formatNowGreetingText(ref),
-          showBackButton: false,
-          backgroundColor: context.appColors.backgroundWhite,
-          actions: [
-            Center(
-                    child: Stack(
-              clipBehavior: Clip.none, // 不裁剪超出边界的内容
-              alignment: Alignment.topLeft,
-              children: <Widget>[
-                // 通知图标
-                const MyAssetImage(Assets.mainHomeNotificationIcon, width: 19, height: 20),
-
-                //未读消息
-                Positioned(
-                  left: 0,
-                  top: 0,
-                  child: Transform.translate(
-                    offset: const Offset(-10, -5),
-                    child: MyTextView(
-                      "99",
-                      boxWidth: 20.0,
-                      textColor: Colors.white,
-                      fontSize: 10,
-                      isFontLight: true,
-                      backgroundColor: context.appColors.redDefault,
-                      cornerRadius: 8,
-                      paddingTop: 2,
-                      paddingBottom: 2,
-                      textAlign: TextAlign.center,
-                    ),
-                  ),
-                ),
-              ],
-            ).onTap(viewModel.gotoNotificationPage))
-                .marginOnly(right: 15),
-          ],
-          showBottomDivider: true),
-      backgroundColor: context.appColors.backgroundDefault,
-      body: EasyRefresh(
-        controller: viewModel.refreshController,
-        onRefresh: viewModel.onRefresh,
-        child: CustomScrollView(
-          scrollDirection: Axis.vertical,
-          slivers: [
-            //支付与奖励
-            _buildPaymentAndRewardsWidget(context, ref),
-
-            //间距
-            _buildSliverSpace(20),
-
-            //九宫选项组 (固定)
-            _buildCategoryWidget(context, ref),
-
-            //轮播图片 (动态)
-            _buildBannerImage(ref, bannerIndex),
-
-            //最新的新闻(动态)
-            _buildLastNews(context, ref),
-
-            //最新的交易
-            SliverToBoxAdapter(
-              child: MyTextView(
-                marginTop: 14,
-                marginLeft: 15,
-                marginBottom: 14,
-                S.current.latest_transactions,
-                textColor: context.appColors.textPrimary,
-                fontSize: 16,
-                isFontMedium: true,
+    return AnnotatedRegion<SystemUiOverlayStyle>(
+        value: MediaQuery.of(context).platformBrightness == Brightness.dark
+            ? ThemeConfig.systemUiOverlayStyleDarkTheme
+            : ThemeConfig.systemUiOverlayStyleLightThemeWhite,
+        child: Scaffold(
+          backgroundColor: context.appColors.backgroundDefault,
+          body: Stack(
+            children: [
+              // 固定顶部的背景图片
+              const Positioned(
+                top: 0,
+                left: 0,
+                right: 0,
+                child: MyAssetImage(
+                  Assets.mainHomeTopImgBg,
+                  width: double.infinity,
+                  fit: BoxFit.cover,
+                  height: 325,
+                ), // 替换为你的图片路径
               ),
-            ),
 
-            //最新交易列表 (动态)
-            _buildLastTransaction(context, state),
-
-            //房产新闻
-            SliverToBoxAdapter(
-              child: MyTextView(
-                marginTop: 14,
-                marginLeft: 15,
-                marginBottom: 14,
-                onClick: viewModel.gotoPropertyNewsPage,
-                S.current.property_news,
-                textColor: context.appColors.textPrimary,
-                fontSize: 16,
-                isFontMedium: true,
+              Positioned(
+                top: 58,
+                left: 0,
+                right: 0,
+                child: Row(
+                  crossAxisAlignment: CrossAxisAlignment.center,
+                  children: [
+                    MyTextView(
+                      _formatNowGreetingText(ref),
+                      marginLeft: 17,
+                      textColor: context.appColors.textBlack,
+                      isFontBold: true,
+                      fontSize: 20,
+                    ).expanded(),
+
+                    //通知角标
+                    Center(
+                            child: Stack(
+                      clipBehavior: Clip.none, // 不裁剪超出边界的内容
+                      alignment: Alignment.topLeft,
+                      children: <Widget>[
+                        // 通知图标
+                        MyAssetImage(
+                          Assets.mainHomeNotificationIcon,
+                          width: 17,
+                          height: 19,
+                          color: context.appColors.imageDarkModelWhite,
+                        ),
+
+                        //未读消息
+                        Positioned(
+                          left: 0,
+                          top: 0,
+                          child: Transform.translate(
+                            offset: const Offset(-10, -5),
+                            child: MyTextView(
+                              "99",
+                              boxWidth: 20.0,
+                              textColor: Colors.white,
+                              fontSize: 10,
+                              isFontLight: true,
+                              backgroundColor: context.appColors.redDefault,
+                              cornerRadius: 8,
+                              paddingTop: 2,
+                              paddingBottom: 2,
+                              textAlign: TextAlign.center,
+                            ),
+                          ),
+                        ),
+                      ],
+                    ).onTap(viewModel.gotoNotificationPage))
+                        .marginOnly(right: 17),
+                  ],
+                ), // 替换为你的图片路径
               ),
-            ),
-
-            //房产新闻列表 (动态)
-            _buildPropertyNews(context, ref),
-
-            //管理员介绍 (固定)
-            _buildManagementGuides(context, ref),
 
-            //间距
-            _buildSliverSpace(15),
-          ],
-        ),
-      ),
-    );
+              Positioned(
+                top: 100,
+                left: 0,
+                right: 0,
+                bottom: 0,
+                child: EasyRefresh(
+                  controller: viewModel.refreshController,
+                  onRefresh: viewModel.onRefresh,
+                  child: CustomScrollView(
+                    scrollDirection: Axis.vertical,
+                    slivers: [
+                      //支付与奖励
+                      _buildPaymentAndRewardsWidget(context, ref),
+
+                      //间距
+                      _buildSliverSpace(20),
+
+                      //九宫选项组 (固定)
+                      _buildCategoryWidget(context, ref),
+
+                      //轮播图片 (动态)
+                      _buildBannerImage(ref, bannerIndex),
+
+                      //最新的新闻(动态)
+                      _buildLastNews(context, ref),
+
+                      //最新的交易
+                      SliverToBoxAdapter(
+                        child: MyTextView(
+                          marginTop: 32,
+                          marginLeft: 15,
+                          marginBottom: 14,
+                          S.current.latest_transactions,
+                          textColor: context.appColors.textBlack,
+                          fontSize: 16,
+                          isFontMedium: true,
+                        ),
+                      ),
+
+                      //最新交易列表 (动态)
+                      _buildLastTransaction(context, state),
+
+                      //房产新闻
+                      SliverToBoxAdapter(
+                        child: Row(
+                          children: [
+                            MyTextView(
+                              marginTop: 30,
+                              marginLeft: 15,
+                              marginBottom: 14,
+                              S.current.property_news,
+                              textColor: context.appColors.textBlack,
+                              fontSize: 16,
+                              isFontMedium: true,
+                            ).expanded(),
+                            MyTextView(
+                              marginTop: 30,
+                              marginLeft: 15,
+                              marginRight: 15,
+                              marginBottom: 14,
+                              onClick: viewModel.gotoPropertyNewsPage,
+                              S.current.all,
+                              textColor: context.appColors.textBlack,
+                              fontSize: 15,
+                              isFontMedium: true,
+                            )
+                          ],
+                        ),
+                      ),
+
+                      //房产新闻列表 (动态)
+                      _buildPropertyNews(context, ref),
+
+                      //管理员介绍 (固定)
+                      _buildManagementGuides(context, ref),
+
+                      //间距
+                      _buildSliverSpace(15),
+                    ],
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ));
   }
 
   //顶部的支付与奖励的布局
@@ -157,56 +218,67 @@ class HomePage extends HookConsumerWidget {
     final viewModel = ref.read(homeViewModelProvider.notifier);
 
     return SliverToBoxAdapter(
-      child: Container(
-        color: context.appColors.whiteBG,
-        width: double.infinity,
-        height: 45,
-        child: Column(
-          children: [
-            Row(
-              children: [
-                Row(
-                  mainAxisSize: MainAxisSize.max,
-                  mainAxisAlignment: MainAxisAlignment.center,
-                  children: [
-                    const MyAssetImage(Assets.mainHomePaymentIcon, width: 16.5, height: 18).marginOnly(left: 20),
-                    MyTextView(
-                      S.current.payment,
-                      textColor: context.appColors.textBlack,
-                      fontSize: 15,
-                      isFontMedium: true,
-                    ).paddingOnly(left: 13, right: 13).expanded(),
-                    const MyAssetImage(Assets.mainHomeMoreIcon, width: 6, height: 8.5).marginOnly(right: 15),
-                  ],
-                ).onTap(viewModel.gotoPaymentPage).expanded(),
-                Container(color: context.appColors.dividerDefault, width: 0.5, height: double.infinity),
-                Row(
-                  mainAxisSize: MainAxisSize.max,
-                  mainAxisAlignment: MainAxisAlignment.center,
-                  children: [
-                    const MyAssetImage(Assets.mainHomeRewardsIcon, width: 16.5, height: 17).marginOnly(left: 20),
-                    MyTextView(
-                      S.current.rewards,
-                      textColor: context.appColors.textBlack,
-                      fontSize: 15,
-                      isFontMedium: true,
-                    ).paddingOnly(left: 13, right: 4).expanded(),
-                    MyTextView(
-                      "9568",
-                      textColor: context.appColors.textBlack,
-                      fontSize: 15,
-                      isFontBold: true,
-                    ).paddingOnly(left: 1, right: 4),
-                    const MyAssetImage(Assets.mainHomeMoreIcon, width: 6, height: 8.5).marginOnly(right: 15),
-                  ],
-                ).onTap(viewModel.gotoRewardsPage).expanded(),
-              ],
-            ).expanded(),
-            //底部分割线
-            Container(color: context.appColors.dividerDefault, height: 0.5, width: double.infinity),
-          ],
-        ),
-      ),
+      child: Row(
+        children: [
+          Row(
+            mainAxisSize: MainAxisSize.max,
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: [
+              const MyAssetImage(
+                Assets.mainHomePaymentIcon,
+                width: 24.5,
+                height: 24.5,
+              ).marginOnly(left: 10),
+              MyTextView(
+                S.current.payment,
+                textColor: context.appColors.textBlack,
+                fontSize: 14,
+                isFontRegular: true,
+              ).paddingOnly(left: 8, right: 8).expanded(),
+              const MyAssetImage(Assets.mainHomeMoreIcon, width: 6, height: 8.5).marginOnly(right: 15),
+            ],
+          )
+              .constrained(height: 46)
+              .decorated(
+                color: const Color(0xFFE0E3FF).withOpacity(0.5),
+                borderRadius: BorderRadius.circular(9.0),
+              )
+              .onTap(viewModel.gotoPaymentPage)
+              .expanded(),
+          const SizedBox(width: 14.5),
+          Row(
+            mainAxisSize: MainAxisSize.max,
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: [
+              const MyAssetImage(
+                Assets.mainHomeRewardsIcon,
+                width: 24.5,
+                height: 24.5,
+              ).marginOnly(left: 10),
+              MyTextView(
+                S.current.rewards,
+                textColor: context.appColors.textBlack,
+                fontSize: 14,
+                isFontRegular: true,
+              ).paddingOnly(left: 8, right: 4).expanded(),
+              MyTextView(
+                "9568",
+                textColor: context.appColors.textBlack,
+                fontSize: 14,
+                isFontBold: true,
+              ).paddingOnly(left: 1, right: 4),
+              const MyAssetImage(Assets.mainHomeMoreIcon, width: 6, height: 8.5).marginOnly(right: 8),
+            ],
+          )
+              .constrained(height: 46)
+              .decorated(
+                color: const Color(0xFFE0E3FF).withOpacity(0.5),
+                borderRadius: BorderRadius.circular(9.0),
+              )
+              .onTap(viewModel.gotoRewardsPage)
+              .expanded(),
+        ],
+      ).paddingOnly(left: 15, right: 15, top: 10),
     );
   }
 
@@ -224,9 +296,8 @@ class HomePage extends HookConsumerWidget {
     return SliverGrid(
       gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
         crossAxisCount: 3, // 三列
-        mainAxisSpacing: 15.0, // 主轴(上下)的间距
+        mainAxisSpacing: 0.0, // 主轴(上下)的间距
         crossAxisSpacing: 0.0, // 交叉轴(左右)的间距
-        childAspectRatio: 10 / 8, // 子组件的宽高比
       ),
       delegate: SliverChildBuilderDelegate(
         (BuildContext context, int index) {
@@ -249,7 +320,7 @@ class HomePage extends HookConsumerWidget {
     return SliverToBoxAdapter(
       child: Container(
         width: double.infinity,
-        margin: const EdgeInsets.only(top: 21, left: 15, right: 15),
+        margin: const EdgeInsets.only(top: 30, left: 15, right: 15),
         child: state.homeIndex != null && state.homeIndex!.banners.isNotEmpty
             ? Stack(
                 alignment: Alignment.bottomCenter, // 设置 Stack 的对齐方式为底部中心
@@ -327,11 +398,11 @@ class HomePage extends HookConsumerWidget {
         MyTextView(
           S.current.latest_news,
           fontSize: 16,
-          marginTop: 14,
+          marginTop: 30,
           marginBottom: 14,
           isFontMedium: true,
           onClick: viewModel.gotoLastNewsPage,
-          textColor: context.appColors.textPrimary,
+          textColor: context.appColors.textBlack,
         ),
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceAround, // 均匀排布
@@ -397,27 +468,16 @@ class HomePage extends HookConsumerWidget {
     );
   }
 
-  //房产新闻的列表
+  //房产新闻的列表
   Widget _buildPropertyNews(BuildContext context, WidgetRef ref) {
     final state = ref.watch(homeViewModelProvider);
     final propertyNewsList = state.homeIndex?.propertyNews ?? [];
 
-    // 计算行数和每行的元素
-    int totalItems = propertyNewsList.length;
-    int firstRowCount = (totalItems + 1) ~/ 2; // 第1行的数量 (奇数时多一个)
-    int secondRowCount = totalItems ~/ 2; // 第2行的数量
-
     return SliverList(
       delegate: SliverChildListDelegate(
         [
           // 第一个水平滑动列表
-          _buildPropertyNewsHorizontalList(propertyNewsList.sublist(0, firstRowCount)),
-
-          const SizedBox(height: 10),
-
-          // 第二个水平滑动列表
-          if (secondRowCount > 0) // 只有在有第二行内容时才显示
-            _buildPropertyNewsHorizontalList(propertyNewsList.sublist(firstRowCount, firstRowCount + secondRowCount)),
+          _buildPropertyNewsHorizontalList(propertyNewsList),
         ],
       ),
     );
@@ -449,11 +509,11 @@ class HomePage extends HookConsumerWidget {
         MyTextView(
           S.current.strata_management_guides,
           fontSize: 16,
-          marginTop: 14,
+          marginTop: 30,
           marginBottom: 14,
           onClick: viewModel.gotoManageGuidePage,
           isFontMedium: true,
-          textColor: context.appColors.textPrimary,
+          textColor: context.appColors.textBlack,
         ),
         SingleChildScrollView(
           scrollDirection: Axis.horizontal,

+ 0 - 12
packages/cpt_main/lib/modules/home/home_state.dart

@@ -43,30 +43,18 @@ class HomeState {
               {
                 'category_name': S.current.property,
                 'category_icon': Assets.mainHomePropertyNews,
-                'icon_width': 38.5,
-                'icon_height': 39.5,
-                'margin_right': 13.0,
               },
               {
                 'category_name': S.current.internal,
                 'category_icon': Assets.mainHomeInternalNews,
-                'icon_width': 33.5,
-                'icon_height': 41.0,
-                'margin_right': 11.0,
               },
               {
                 'category_name': S.current.info,
                 'category_icon': Assets.mainHomeInfoNews,
-                'icon_width': 44.0,
-                'icon_height': 42.0,
-                'margin_right': 6.0,
               },
               {
                 'category_name': S.current.notice,
                 'category_icon': Assets.mainHomePublishNews,
-                'icon_width': 40.5,
-                'icon_height': 42.5,
-                'margin_right': 11.0,
               }
             ];
 

+ 24 - 9
packages/cpt_main/lib/modules/home/item_home_category.dart

@@ -1,11 +1,10 @@
-import 'package:cpt_main/modules/feedback/create/feedback_create_page.dart';
-import 'package:cpt_main/modules/feedback/feedback_page.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 
+
 class HomeCategoryItem extends StatelessWidget {
   final Map<String, dynamic> category;
 
@@ -13,13 +12,29 @@ class HomeCategoryItem extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    return Column(
-      mainAxisAlignment: MainAxisAlignment.spaceBetween,
-      crossAxisAlignment: CrossAxisAlignment.center,
-      children: <Widget>[
-        MyAssetImage(category['category_icon'], width: 70, height: 70),
-        MyTextView(category['category_name'], fontSize: 15, isFontMedium: true, textColor: context.appColors.textBlack),
-      ],
+    // 使用 LayoutBuilder 获取当前可用宽度
+    return LayoutBuilder(
+      builder: (BuildContext context, BoxConstraints constraints) {
+        double itemWidth = constraints.maxWidth; // 获取可用宽度
+        return Column(
+          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          crossAxisAlignment: CrossAxisAlignment.center,
+          children: <Widget>[
+            MyAssetImage(
+              category['category_icon'],
+              width: itemWidth, // 动态设置宽度
+              height: itemWidth * (101.5 / 124.5), // 按照比例动态设置高度
+            ),
+            MyTextView(
+              category['category_name'],
+              fontSize: 14,
+              isFontRegular: true,
+              textColor: context.appColors.textBlack,
+            ),
+          ],
+        );
+      },
     );
   }
 }
+

+ 7 - 36
packages/cpt_main/lib/modules/home/item_home_last_news.dart

@@ -14,49 +14,20 @@ class LastNewsItem extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return Column(
-      crossAxisAlignment: CrossAxisAlignment.start,
-      mainAxisAlignment: MainAxisAlignment.start,
       children: [
+        MyAssetImage(
+          lastNews['category_icon'],
+          width: 80,
+          height: 80,
+        ),
         MyTextView(
           lastNews['category_name'],
-          marginLeft: 9,
           marginTop: 9,
           fontSize: 14,
           isFontMedium: true,
-          textColor: context.appColors.tabTextUnSelectedPrimary,
-        ),
-        const Spacer(),
-        Row(
-          mainAxisAlignment: MainAxisAlignment.end, // 对齐到右侧
-          children: [
-            Padding(
-              padding: EdgeInsets.only(right: lastNews['margin_right']), // 控制边距
-              child: MyAssetImage(
-                lastNews['category_icon'],
-                width: (lastNews['icon_width'] as num).toDouble(),
-                height: (lastNews['icon_height'] as num).toDouble(),
-                fit: BoxFit.cover, // 调整 fit 参数
-              ),
-            ),
-          ],
+          textColor: context.appColors.textBlack,
         ),
       ],
-      // ),
-    )
-        .decorated(
-          color: context.appColors.whiteBG,
-          borderRadius: BorderRadius.circular(5.0), // 5个圆角
-          boxShadow: [
-            BoxShadow(
-              color: const Color(0xFF656565).withOpacity(0.1), // 阴影颜色,并且设置透明度
-              offset: const Offset(0, 1.5), // 阴影的偏移量
-              blurRadius: 2.5, // 模糊半径
-              spreadRadius: 1.5, // 扩散半径
-            ),
-          ],
-        )
-        .marginOnly(right: 5)
-        .constrained(width: 86.5, height: 78.5)
-        .onTap(onItemTap);
+    ).marginOnly(right: 5).onTap(onItemTap);
   }
 }

+ 8 - 1
packages/cpt_main/lib/modules/home/item_home_last_trans.dart

@@ -28,10 +28,17 @@ class LastTransItem extends StatelessWidget {
               textColor: context.appColors.textBlack,
               isFontMedium: true,
             ),
+
             MyTextView(
               lastTrans.price ?? "",
               fontSize: 15,
               marginTop: 5,
+              backgroundColor: context.appColors.lightBlueBg,
+              cornerRadius: 6.5,
+              paddingLeft: 12,
+              paddingRight: 12,
+              paddingTop: 3,
+              paddingBottom: 3,
               textColor: context.appColors.textBlack,
               isFontMedium: true,
             ),
@@ -42,7 +49,7 @@ class LastTransItem extends StatelessWidget {
           padding: const EdgeInsets.symmetric(horizontal: 5),
           height: 45,
           decoration: BoxDecoration(
-            color: context.appColors.lightPurpleBg,
+            color: context.appColors.lightBlueDarkBg,
             borderRadius: BorderRadius.circular(5.0), // 5个圆角
           ),
           child: Column(

+ 10 - 10
packages/cpt_main/lib/modules/home/item_home_property_news.dart

@@ -14,23 +14,23 @@ class PropertyNews extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    return Row(
-      crossAxisAlignment: CrossAxisAlignment.center,
-      mainAxisAlignment: MainAxisAlignment.start,
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.start,
       children: [
         MyLoadImage(
           news?.coverImage,
-          width: 80,
-          height: 80,
+          width: 164.5,
+          height: 105,
         ),
         MyTextView(
           news?.title ?? "",
-          fontSize: 15,
-          marginLeft: 12.5,
-          marginRight: 12.5,
+          fontSize: 14,
+          marginLeft: 14,
+          marginRight: 14,
+          marginTop: 15.5,
           maxLines: 4,
           textColor: context.appColors.textBlack,
-          isFontMedium: true,
+          isFontRegular: true,
         ).expanded(),
       ],
     )
@@ -47,6 +47,6 @@ class PropertyNews extends StatelessWidget {
           ],
         )
         .marginOnly(right: 10)
-        .constrained(height: 80, width: 270);
+        .constrained(height: 202.5, width: 165);
   }
 }

+ 1 - 1
packages/cpt_main/lib/modules/home/latest_news/item_latest_news.dart

@@ -25,7 +25,7 @@ class LatestNewsItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0),
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3),
+            color: context.appColors.itemBGShadow,
             offset: const Offset(0, 3),
             blurRadius: 8.0,
             spreadRadius: 3.0,

+ 1 - 1
packages/cpt_main/lib/modules/home/management_guides/item_management_guide.dart

@@ -20,7 +20,7 @@ class ManagementGuideItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(5.0), // 5个圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFF656565).withOpacity(0.1), // 阴影颜色,并且设置透明度
+            color: context.appColors.itemBGShadow, // 阴影颜色,并且设置透明度
             offset: const Offset(0, 1.5), // 阴影的偏移量
             blurRadius: 2.5, // 模糊半径
             spreadRadius: 1.5, // 扩散半径

+ 1 - 1
packages/cpt_main/lib/modules/home/property_news/item_list_news.dart

@@ -26,7 +26,7 @@ class ListNewsItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径

+ 1 - 1
packages/cpt_main/lib/modules/main/main_page.dart

@@ -59,7 +59,7 @@ class MainPage extends HookConsumerWidget {
           currentIndex: tabsRouter.activeIndex,
           onTap: tabsRouter.setActiveIndex,
           unselectedLabelStyle: const TextStyle(color: AppColorsTheme.color666666, fontWeight: FontWeight.w400),
-          selectedLabelStyle: TextStyle(color: context.appColors.textPrimary, fontWeight: FontWeight.w400),
+          selectedLabelStyle:  TextStyle(color: context.appColors.textPrimary, fontWeight: FontWeight.w400),
           unselectedFontSize: 12,
           selectedFontSize: 12,
           items: () {

+ 5 - 0
packages/cpt_main/lib/modules/main/main_state.dart

@@ -1,6 +1,7 @@
 import 'package:cpt_main/modules/feedback/feedback_page.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
@@ -19,6 +20,7 @@ class MainState {
         Assets.mainTabHomeSelected,
         width: 20,
         height: 20,
+        color: AppColorsTheme.colorPrimary,
       ).marginOnly(bottom: 4),
       const MyAssetImage(
         //暗色
@@ -38,6 +40,7 @@ class MainState {
         Assets.mainTabVisitorSelected,
         width: 20,
         height: 20,
+        color: AppColorsTheme.colorPrimary,
       ).marginOnly(bottom: 4),
       const MyAssetImage(
         Assets.mainTabVisitorSelected,
@@ -56,6 +59,7 @@ class MainState {
         Assets.mainTabFeedbackSelected,
         width: 20,
         height: 20,
+        color: AppColorsTheme.colorPrimary,
       ).marginOnly(bottom: 4),
       const MyAssetImage(
         Assets.mainTabFeedbackSelected,
@@ -74,6 +78,7 @@ class MainState {
         Assets.mainTabMeSelected,
         width: 20,
         height: 20,
+        color: AppColorsTheme.colorPrimary,
       ).marginOnly(bottom: 4),
       const MyAssetImage(
         Assets.mainTabMeSelected,

+ 1 - 1
packages/cpt_main/lib/modules/visitor/item_visitor.dart

@@ -24,7 +24,7 @@ class VisitorItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径

+ 7 - 1
packages/cpt_main/lib/modules/visitor/register/visitor_register_page.dart

@@ -13,6 +13,7 @@ import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import 'package:widgets/widget_export.dart';
 import 'package:widgets/my_text_field.dart';
 import 'package:widgets/shatter/form_require_text.dart';
@@ -149,7 +150,12 @@ class VisitorRegisterPage extends HookConsumerWidget {
               PickerContainer(
                 content: state.accessDate == null ? "" : DateTimeUtils.formatDate(state.accessDate, format: 'dd MMM yyyy'),
                 margin: const EdgeInsets.only(top: 16),
-                rightWidget: const MyAssetImage(Assets.mainVisitorRegisterDate, width: 21, height: 20),
+                rightWidget:  MyAssetImage(
+                  Assets.mainVisitorRegisterDate,
+                  width: 21,
+                  height: 20,
+                  color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary,darkColor: Colors.white),
+                ),
                 onClick: viewModel.pickAccessDate,
               ),
 

+ 35 - 44
packages/cpt_notice_board/lib/modules/announ/page/announ_page.dart

@@ -1,4 +1,5 @@
 import 'package:cpt_notice_board/modules/notice_board/page/notice_board_page.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
@@ -37,10 +38,7 @@ class AnnounPage extends HookConsumerWidget {
         maxLines: 2, // 设置最大行数为2
         overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
         item['title'],
-        style: const TextStyle(
-            fontSize: 16.0,
-            color: Colors.black,
-            fontWeight: FontWeight.w700), // 设置字体大小
+        style:  TextStyle(fontSize: 16.0, color: context.appColors.textBlack, fontWeight: FontWeight.w700), // 设置字体大小
       ),
     );
   }
@@ -50,10 +48,7 @@ class AnnounPage extends HookConsumerWidget {
       // color: Colors.green,
       child: Text(
         item['created_at'],
-        style: const TextStyle(
-            fontSize: 14.0,
-            color: Colors.black,
-            fontWeight: FontWeight.w400), // 设置字体大小
+        style:  TextStyle(fontSize: 14.0, color: context.appColors.textBlack, fontWeight: FontWeight.w400), // 设置字体大小
       ),
     );
   }
@@ -61,16 +56,18 @@ class AnnounPage extends HookConsumerWidget {
   // listitem
   Widget _buildSaleItem(BuildContext context, WidgetRef ref, item, vm) {
     return Container(
-      decoration: const BoxDecoration(
-        color: Colors.white,
-        borderRadius: BorderRadius.all(Radius.circular(6.0)),
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: const BorderRadius.all(Radius.circular(6.0)),
         boxShadow: [
-          BoxShadow(color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
+          BoxShadow(
+            color: context.appColors.itemBGShadow,
+          )
         ],
       ),
       child: Column(
         children: [
-          Container(
+          SizedBox(
             width: MediaQuery.of(context).size.width - 30,
             height: 100,
             // margin: const EdgeInsets.only(left: 15, right: 15, top: 12.5),
@@ -78,8 +75,7 @@ class AnnounPage extends HookConsumerWidget {
               crossAxisAlignment: CrossAxisAlignment.start,
               mainAxisAlignment: MainAxisAlignment.center,
               children: [
-                _buildItemLeftSection(context, ref, item, vm)
-                    .marginOnly(bottom: 5),
+                _buildItemLeftSection(context, ref, item, vm).marginOnly(bottom: 5),
                 _buildItemRightSection(context, ref, item, vm),
               ],
             ).paddingOnly(left: 20, right: 20),
@@ -116,35 +112,30 @@ class AnnounPage extends HookConsumerWidget {
         Log.d("property_news_page 组件卸载时执行");
       };
     }, []);
-    return Scaffold(
-      // appBar: AppBar(title: Text("资产")),
-      body: SizedBox(
-          width: double.infinity,
-          height: double.infinity,
-          child: EasyRefresh(
-              controller: vm.refreshController,
-              // 上拉加载
-              onLoad: () async {
-                Log.d("----onLoad");
-                vm.loadMore();
-              },
-              // 下拉刷新
-              onRefresh: () async {
-                Log.d("----onRefresh");
-                vm.onRefresh();
-              },
-              child: Container(
-                color: ColorUtils.string2Color('#F2F3F6'),
-                padding: const EdgeInsets.only(top: 15),
-                child: LoadStateLayout(
-                  state: state.loadingState,
-                  errorMessage: state.errorMessage,
-                  errorRetry: () {
-                    vm.retryRequest();
-                  },
-                  successSliverWidget: [_buildSaleList(context, ref, vm)],
-                ),
-              ))),
+    return EasyRefresh(
+      controller: vm.refreshController,
+      // 上拉加载
+      onLoad: () async {
+        Log.d("----onLoad");
+        vm.loadMore();
+      },
+      // 下拉刷新
+      onRefresh: () async {
+        Log.d("----onRefresh");
+        vm.onRefresh();
+      },
+      child: Container(
+        color:context.appColors.backgroundDark,
+        padding: const EdgeInsets.only(top: 15),
+        child: LoadStateLayout(
+          state: state.loadingState,
+          errorMessage: state.errorMessage,
+          errorRetry: () {
+            vm.retryRequest();
+          },
+          successSliverWidget: [_buildSaleList(context, ref, vm)],
+        ),
+      ),
     );
   }
 }

+ 8 - 8
packages/cpt_notice_board/lib/modules/announcement_detail/page/announcement_detail_page.dart

@@ -43,9 +43,9 @@ class AnnouncementDetailPage extends HookConsumerWidget {
         Column(children: [
           Text(
             item.title,
-            style: const TextStyle(
+            style: TextStyle(
                 fontSize: 18.0,
-                color: Colors.black,
+                color: context.appColors.textBlack,
                 fontWeight: FontWeight.w700), // 设置字体大小
           ),
           // Row(
@@ -82,18 +82,18 @@ class AnnouncementDetailPage extends HookConsumerWidget {
                 width: 15,
                 height: 15,
               ).marginOnly(right: 8),
-              const Text(
+               Text(
                 'Date: ',
                 style: TextStyle(
                     fontSize: 15.0,
-                    color: Colors.black,
+                    color: context.appColors.textBlack,
                     fontWeight: FontWeight.w700), // 设置字体大小
               ),
               Text(
                 item.createdAt,
-                style: const TextStyle(
+                style: TextStyle(
                     fontSize: 15.0,
-                    color: Colors.black,
+                    color:context.appColors.textBlack,
                     fontWeight: FontWeight.w400), // 设置字体大小
               ),
             ],
@@ -128,7 +128,7 @@ class AnnouncementDetailPage extends HookConsumerWidget {
             .border(bottom: 1, color: ColorUtils.string2Color('#F2F3F6')),
         Column(
           children: [
-            const Column(
+             Column(
               mainAxisAlignment: MainAxisAlignment.center,
               crossAxisAlignment: CrossAxisAlignment.center,
               children: [
@@ -136,7 +136,7 @@ class AnnouncementDetailPage extends HookConsumerWidget {
                   'IMPORTANT',
                   style: TextStyle(
                       fontSize: 18.0,
-                      color: Colors.black,
+                      color: context.appColors.textBlack,
                       fontWeight: FontWeight.w700), // 设置字体大小
                 )
               ],

+ 24 - 23
packages/cpt_notice_board/lib/modules/documents/page/documents_page.dart

@@ -1,4 +1,6 @@
 import 'package:cpt_notice_board/modules/notice_board/page/notice_board_page.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
@@ -37,41 +39,39 @@ class DocumentsPage extends HookConsumerWidget {
         item['name'],
         maxLines: 1, // 设置最大行数为2
         overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
-        style: const TextStyle(
-            fontSize: 16.0,
-            color: Colors.black,
-            fontWeight: FontWeight.w700), // 设置字体大小
+        style: TextStyle(fontSize: 16.0, color: context.appColors.textBlack, fontWeight: FontWeight.w700), // 设置字体大小
       ),
     ).marginOnly(right: 17.5);
   }
 
-  Widget _buildItemRightSection(
-      BuildContext context, WidgetRef ref, item, _vm) {
+  Widget _buildItemRightSection(BuildContext context, WidgetRef ref, item, _vm) {
     return Container(
-      color: Colors.white,
+      color: context.appColors.whiteBG,
       child: TextButton(
         onPressed: () {
           DocumentsListPage.startInstance(id: item['id']);
           // DocumentsListPage.startInstance(context: context);
         },
         style: TextButton.styleFrom(
-          foregroundColor: Colors.black,
-          backgroundColor: ColorUtils.string2Color('#4161D0'), // 背景颜色
-          minimumSize: const Size(91.5, 30), // 最小宽度和高度
-          padding:
-              const EdgeInsets.symmetric(horizontal: 11.0, vertical: 9), // 内边距
+          foregroundColor: context.appColors.textBlack,
+          backgroundColor: context.appColors.tabBgSelectedPrimary,
+          // 背景颜色
+          minimumSize: const Size(91.5, 30),
+          // 最小宽度和高度
+          padding: const EdgeInsets.symmetric(horizontal: 11.0, vertical: 9),
+          // 内边距
           shape: RoundedRectangleBorder(
             borderRadius: BorderRadius.circular(5), // 圆角
             side: BorderSide(
-              color: ColorUtils.string2Color('#4161D0'),
+              color: context.appColors.tabBgSelectedPrimary,
               width: 1.0,
             ), // 边框
           ),
         ),
-        child: const Text(
-          'Open Folder',
-          style: const TextStyle(
-            color: Colors.white,
+        child: Text(
+          S.current.open_folder,
+          style: TextStyle(
+            color: context.appColors.textWhite,
           ),
         ),
       ),
@@ -82,11 +82,13 @@ class DocumentsPage extends HookConsumerWidget {
   Widget _buildSaleItem(BuildContext context, WidgetRef ref, item, _vm) {
     String url = item['url'];
     return Container(
-      decoration: const BoxDecoration(
-        color: Colors.white,
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
         borderRadius: BorderRadius.all(Radius.circular(6.0)),
         boxShadow: [
-          BoxShadow(color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
+          BoxShadow(
+            color: context.appColors.itemBGShadow,
+          )
         ],
       ),
       child: Row(
@@ -119,8 +121,7 @@ class DocumentsPage extends HookConsumerWidget {
         // 去详情
         if (url != '') {
           // _vm.launchURL(url);
-          GlobalWebPage.startInstance(
-              context: context, title: item['name'], url: url);
+          GlobalWebPage.startInstance(context: context, title: item['name'], url: url);
         }
         // DocumentsListPage.startInstance(context: context);
       }),
@@ -166,7 +167,7 @@ class DocumentsPage extends HookConsumerWidget {
                 vm.onRefresh();
               },
               child: Container(
-                color: ColorUtils.string2Color('#F2F3F6'),
+                color: context.appColors.backgroundDark,
                 padding: const EdgeInsets.only(top: 15),
                 child: LoadStateLayout(
                   state: state.loadingState,

+ 16 - 15
packages/cpt_notice_board/lib/modules/documents_list/page/documents_list_page.dart

@@ -1,4 +1,5 @@
 import 'package:cpt_notice_board/modules/notice_board/page/notice_board_page.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -43,9 +44,9 @@ class DocumentsListPage extends HookConsumerWidget {
         item['name'],
         maxLines: 2, // 设置最大行数为2
         overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
-        style: const TextStyle(
+        style:  TextStyle(
             fontSize: 16.0,
-            color: Colors.black,
+            color: context.appColors.textBlack,
             fontWeight: FontWeight.w700), // 设置字体大小
       ),
     ).marginOnly(right: 17.5);
@@ -58,23 +59,23 @@ class DocumentsListPage extends HookConsumerWidget {
       child: TextButton(
         onPressed: () {},
         style: TextButton.styleFrom(
-          foregroundColor: Colors.black,
-          backgroundColor: ColorUtils.string2Color('#4161D0'), // 背景颜色
+          foregroundColor: context.appColors.textBlack,
+          backgroundColor: context.appColors.tabBgSelectedPrimary, // 背景颜色
           minimumSize: const Size(91.5, 30), // 最小宽度和高度
           padding:
               const EdgeInsets.symmetric(horizontal: 11.0, vertical: 9), // 内边距
           shape: RoundedRectangleBorder(
             borderRadius: BorderRadius.circular(5), // 圆角
             side: BorderSide(
-              color: ColorUtils.string2Color('#4161D0'),
+              color: AppColorsTheme.colorPrimary,
               width: 1.0,
             ), // 边框
           ),
         ),
-        child: const Text(
-          'Open Folder',
-          style: const TextStyle(
-            color: Colors.white,
+        child: Text(
+          S.current.open_folder,
+          style:  TextStyle(
+            color: context.appColors.textWhite,
           ),
         ),
       ),
@@ -85,11 +86,11 @@ class DocumentsListPage extends HookConsumerWidget {
   Widget _buildSaleItem(BuildContext context, WidgetRef ref, item, _vm) {
     String url = item['url'];
     return Container(
-      decoration: const BoxDecoration(
-        color: Colors.white,
-        borderRadius: BorderRadius.all(Radius.circular(6.0)),
+      decoration:  BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: const BorderRadius.all(Radius.circular(6.0)),
         boxShadow: [
-          BoxShadow(color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
+          BoxShadow( color: context.appColors.itemBGShadow,)
         ],
       ),
       child: Row(
@@ -149,7 +150,7 @@ class DocumentsListPage extends HookConsumerWidget {
     return Scaffold(
       appBar: MyAppBar.appBar(
         context,
-        "Documents",
+        S.current.documents,
         backgroundColor: context.appColors.backgroundWhite,
       ),
       body: Container(
@@ -166,7 +167,7 @@ class DocumentsListPage extends HookConsumerWidget {
                 vm.onRefresh();
               },
               child: Container(
-                color: ColorUtils.string2Color('#F2F3F6'),
+                color: context.appColors.backgroundDark,
                 padding: const EdgeInsets.only(top: 15),
                 child: LoadStateLayout(
                   state: state.loadingState,

+ 10 - 8
packages/cpt_notice_board/lib/modules/event/page/event_page.dart

@@ -1,5 +1,7 @@
+import 'package:cpt_notice_board/modules/announ/page/announ_page.dart';
 import 'package:cpt_notice_board/modules/event_detail/page/event_detail_page.dart';
 import 'package:cpt_notice_board/modules/notice_board/page/notice_board_page.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
@@ -34,9 +36,9 @@ class EventPage extends HookConsumerWidget {
       maxLines: 2, // 设置最大行数为2
       overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
       item['title'],
-      style: const TextStyle(
+      style:  TextStyle(
           fontSize: 16.0,
-          color: Colors.black,
+          color: context.appColors.textBlack,
           fontWeight: FontWeight.w700), // 设置字体大小
     );
   }
@@ -47,9 +49,9 @@ class EventPage extends HookConsumerWidget {
       // color: Colors.green,
       child: Text(
         item['created_at'],
-        style: const TextStyle(
+        style:  TextStyle(
             fontSize: 14.0,
-            color: Colors.black,
+            color: context.appColors.textBlack,
             fontWeight: FontWeight.w400), // 设置字体大小
       ),
     );
@@ -58,11 +60,11 @@ class EventPage extends HookConsumerWidget {
   // listitem
   Widget _buildSaleItem(BuildContext context, WidgetRef ref, item, _vm) {
     return Container(
-      decoration: const BoxDecoration(
-        color: Colors.white,
+      decoration:  BoxDecoration(
+        color: context.appColors.whiteBG,
         borderRadius: BorderRadius.all(Radius.circular(6.0)),
         boxShadow: [
-          BoxShadow(color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
+          BoxShadow(  color: context.appColors.itemBGShadow,)
         ],
       ),
       child: Column(
@@ -130,7 +132,7 @@ class EventPage extends HookConsumerWidget {
                 vm.onRefresh();
               },
               child: Container(
-                color: ColorUtils.string2Color('#F2F3F6'),
+                color: context.appColors.backgroundDark,
                 padding: const EdgeInsets.only(top: 15),
                 child: LoadStateLayout(
                   state: state.loadingState,

+ 20 - 16
packages/cpt_notice_board/lib/modules/event_detail/page/event_detail_page.dart

@@ -21,6 +21,7 @@ import '../vm/event_detail_vm.dart';
 @RoutePage()
 class EventDetailPage extends HookConsumerWidget {
   final int? id;
+
   const EventDetailPage({Key? key, @PathParam('id') required this.id})
       : super(key: key);
 
@@ -43,9 +44,9 @@ class EventDetailPage extends HookConsumerWidget {
         Column(children: [
           Text(
             item.title,
-            style: const TextStyle(
+            style: TextStyle(
                 fontSize: 18.0,
-                color: Colors.black,
+                color: context.appColors.textBlack,
                 fontWeight: FontWeight.w700), // 设置字体大小
           ),
           Row(
@@ -66,9 +67,9 @@ class EventDetailPage extends HookConsumerWidget {
               // ),
               Text(
                 item.datetime,
-                style: const TextStyle(
+                style: TextStyle(
                     fontSize: 15.0,
-                    color: Colors.black,
+                    color: context.appColors.textBlack,
                     fontWeight: FontWeight.w400), // 设置字体大小
               ),
             ],
@@ -96,10 +97,13 @@ class EventDetailPage extends HookConsumerWidget {
             // ).marginOnly(bottom: 25),
             resources!.length > 0
                 ? MyLoadImage(
-                    resources[0] ?? '',
-                    width: MediaQuery.of(context).size.width,
-                    height: 150,
-                  ).marginOnly(bottom: 15)
+              resources[0] ?? '',
+              width: MediaQuery
+                  .of(context)
+                  .size
+                  .width,
+              height: 150,
+            ).marginOnly(bottom: 15)
                 : Container(),
             Html(
               data: item.content,
@@ -137,15 +141,15 @@ class EventDetailPage extends HookConsumerWidget {
           },
           successWidget: Container(
               child: EasyRefresh(
-            child: SingleChildScrollView(
-                scrollDirection: Axis.vertical,
-                physics: const BouncingScrollPhysics(),
-                clipBehavior: Clip.none,
-                child: Padding(
-                    padding:
+                child: SingleChildScrollView(
+                    scrollDirection: Axis.vertical,
+                    physics: const BouncingScrollPhysics(),
+                    clipBehavior: Clip.none,
+                    child: Padding(
+                        padding:
                         const EdgeInsets.only(left: 15, right: 15, top: 15),
-                    child: _buildDetailTop(context, ref, _vm, detailInfo))),
-          ))),
+                        child: _buildDetailTop(context, ref, _vm, detailInfo))),
+              ))),
     );
   }
 }

+ 8 - 11
packages/cpt_notice_board/lib/modules/notice_board/page/notice_board_page.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -36,7 +37,7 @@ class NoticeBoardPage extends HookConsumerWidget {
     final curIdx =
         ref.watch(noticeBoardVmProvider.select((value) => value.curIdx));
     return Container(
-      color: Colors.white,
+      color: context.appColors.whiteBG,
       child: Center(
         child: Row(
           mainAxisAlignment: MainAxisAlignment.center,
@@ -46,20 +47,17 @@ class NoticeBoardPage extends HookConsumerWidget {
             return Column(
               children: [
                 Container(
-                  width: MediaQuery.of(context).size.width /
-                          topSectionsData.length -
-                      36,
+                  width: MediaQuery.of(context).size.width / topSectionsData.length - 36,
                   height: 70,
                   padding: const EdgeInsets.only(
                       top: 18, left: 15, right: 15, bottom: 15),
                   decoration: BoxDecoration(
-                    color:  ColorUtils.string2Color('#E6F2FF'),
+                    color: context.appColors.lightBlueBg, // 设置圆形背景颜色
                     shape: BoxShape.circle, // 设置为圆形
                     boxShadow: tabsRouter.activeIndex == index
                         ? [
                             BoxShadow(
-                              color: context
-                                  .appColors.tabLightBlueShadow, // 设置阴影颜色
+                              color: context.appColors.tabLightBlueShadow, // 设置阴影颜色
                               blurRadius: 5, // 设置模糊半径
                               spreadRadius: 0.05, // 控制阴影扩散
                               offset: const Offset(0, 4), // 设置阴影偏移量
@@ -84,9 +82,8 @@ class NoticeBoardPage extends HookConsumerWidget {
                   maxLines: 1, // 设置最大行数为2
                   isTextEllipsis: true, // 超出部分用省略号表示
                   fontSize: 13,
-                  textColor: currentTabIdx == index
-                      ? ColorUtils.string2Color('#4161D0')
-                      : Colors.black,
+                  textColor: currentTabIdx == index?
+                  context.appColors.tabTextSelectedDefault : context.appColors.tabTextUnSelectedDefault,
                   isFontMedium: true,
                 ),
               ],
@@ -103,7 +100,7 @@ class NoticeBoardPage extends HookConsumerWidget {
     return Scaffold(
         appBar: MyAppBar.appBar(
           context,
-          "Notice Board",
+          S.current.notice_board,
           backgroundColor: context.appColors.backgroundWhite,
         ),
         body: AutoTabsRouter.pageView(

+ 4 - 3
packages/cpt_notice_board/lib/modules/notice_board/vm/notice_board_view_model.dart

@@ -15,6 +15,7 @@
 
 
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -37,19 +38,19 @@ class NoticeBoardVmState {
     this.curIdx = 0,
   }) : topSectionsData = topSectionsData?? [
     {
-      "title": "Announcement",
+      "title": S.current.announcement,
       "icon": Assets.noticeBoardAnnouncementIcon,
       "pageStartInstanceFn": AnnounPage.startInstance,
       "page": const AnnounPage(),
     },
     {
-      "title": "Event",
+      "title": S.current.event,
       "icon": Assets.noticeBoardEventIcon,
       "pageStartInstanceFn": EventPage.startInstance,
       "page": const EventPage(),
     },
     {
-      "title": "Documents",
+      "title": S.current.documents,
       "icon": Assets.noticeBoardDocumentsIcon,
       "pageStartInstanceFn": DocumentsPage.startInstance,
       "page": const DocumentsPage(),

+ 1 - 1
packages/cpt_notice_board/lib/router/page/notice_board_page_router.dart

@@ -13,7 +13,7 @@ import '../../modules/documents_list/page/documents_list_page.dart';
 
 part 'notice_board_page_router.gr.dart';
 
-/*\
+/*
  * NoticeBoard 模块的路由
  */
 @AutoRouterConfig(replaceInRouteName: 'Page|Screen,PageRoute')

+ 9 - 1
packages/cpt_payment/lib/modules/add_card/add_card_page.dart

@@ -12,6 +12,7 @@ import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/my_text_field.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import 'package:widgets/widget_export.dart';
 
 import '../../router/page/payment_page_router.dart';
@@ -213,7 +214,14 @@ class AddCardPage extends HookConsumerWidget {
         obscureText: obscureText,
         errorText: errorText,
         showLeftIcon: showLeftIcon,
-        leftWidget: showLeftIcon ? MyAssetImage(leftIcon ?? "", width: 27, height: 27) : const SizedBox(),
+        leftWidget: showLeftIcon
+            ? MyAssetImage(
+                leftIcon ?? "",
+                width: 27,
+                height: 27,
+                color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+              )
+            : const SizedBox(),
         showRightIcon: showRightIcon,
         rightWidget: rightWidget,
       ),

+ 2 - 5
packages/cpt_payment/lib/modules/choose_card/choose_card_page.dart

@@ -13,8 +13,8 @@ import 'package:widgets/my_text_view.dart';
 import 'package:widgets/widget_export.dart';
 
 import '../../router/page/payment_page_router.dart';
-import '../payment/manage/item_manage.dart';
 import 'choose_card_view_model.dart';
+import 'item_card.dart';
 
 @RoutePage()
 class ChooseCardPage extends HookConsumerWidget {
@@ -90,12 +90,9 @@ class ChooseCardPage extends HookConsumerWidget {
                   SliverList(
                       delegate: SliverChildBuilderDelegate(
                     (context, index) {
-                      return ManageItem(
+                      return CardItem(
                         index: index,
                         item: state.datas[index],
-                        deleteAction: () {
-                          viewModel.showDeleteDialog(index);
-                        },
                       ).onTap(() {
                         viewModel.setAsPrimary(index);
                       });

+ 2 - 1
packages/cpt_payment/lib/modules/choose_card/choose_card_view_model.dart

@@ -1,4 +1,5 @@
 import 'package:cpt_payment/modules/add_card/add_card_page.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -154,7 +155,7 @@ class ChooseCardViewModel extends _$ChooseCardViewModel {
   void showDeleteDialog(int index) {
     DialogEngine.show(
         widget: AppDefaultDialog(
-      message: "Are you sure you want to delete this Card?",
+      message: S.current.sure_del_card,
       confirmAction: () {
         ToastEngine.show("点击了确定");
       },

+ 65 - 0
packages/cpt_payment/lib/modules/choose_card/item_card.dart

@@ -0,0 +1,65 @@
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+///  选择银行卡的Item
+class CardItem extends StatelessWidget {
+  final int index;
+  final bool item;
+
+  const CardItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      margin: const EdgeInsets.only(top: 1),
+      color: context.appColors.whiteBG,
+      width: double.infinity,
+      padding: const EdgeInsets.only(left: 20, right: 23, top: 20, bottom: 20),
+      child: Row(
+        mainAxisSize: MainAxisSize.max,
+        crossAxisAlignment: CrossAxisAlignment.center,
+        children: [
+          //选中
+          MyAssetImage(
+            item ? Assets.baseServiceRadioChecked : Assets.baseServiceRadioUncheck,
+            width: 25,
+            height: 25,
+          ),
+
+          const MyAssetImage(
+            Assets.facilityAddCardMaster,
+            height: 38,
+          ).marginOnly(left: 9, right: 9),
+
+          Column(
+            crossAxisAlignment: CrossAxisAlignment.start,
+            children: [
+              MyTextView(
+                "Wu Bing Bing's Card",
+                textColor: context.appColors.textBlack,
+                fontSize: 13.5,
+                isFontRegular: true,
+              ),
+              MyTextView(
+                "Ending 9423",
+                marginTop: 5,
+                textColor: context.appColors.textBlack,
+                fontSize: 13.5,
+                isFontRegular: true,
+              ),
+            ],
+          ).expanded(),
+
+        ],
+      ),
+    );
+  }
+}

+ 3 - 3
packages/cpt_payment/lib/modules/payment/history/item_history_list.dart

@@ -25,7 +25,7 @@ class HistoryListItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径
@@ -84,7 +84,7 @@ class HistoryListItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,
@@ -97,7 +97,7 @@ class HistoryListItem extends StatelessWidget {
                     textColor: context.appColors.textPrimary,
                     fontSize: 13,
                     isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
+                    backgroundColor: context.appColors.lightBlueDarkBg,
                     cornerRadius: 3,
                     paddingLeft: 7,
                     marginRight: 6,

+ 2 - 2
packages/cpt_payment/lib/modules/payment/info/info_screen.dart

@@ -45,7 +45,7 @@ class InfoScreen extends HookConsumerWidget {
                           style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500, color: context.appColors.textPrimary),
                           children: <TextSpan>[
                             const TextSpan(
-                              text: "YY Home",
+                              text: "24IFM",
                             ),
                             TextSpan(
                               text: " Pay",
@@ -92,7 +92,7 @@ class InfoScreen extends HookConsumerWidget {
                 style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500, color: context.appColors.textPrimary),
                 children: <TextSpan>[
                   const TextSpan(
-                    text: "YY Home",
+                    text: "24IFM",
                   ),
                   TextSpan(
                     text: " Pay",

+ 1 - 1
packages/cpt_payment/lib/modules/payment/manage/item_manage.dart

@@ -36,7 +36,7 @@ class ManageItem extends StatelessWidget {
             height: 25,
           ),
 
-          MyAssetImage(
+          const MyAssetImage(
             Assets.facilityAddCardMaster,
             height: 38,
           ).marginOnly(left: 9, right: 9),

+ 2 - 1
packages/cpt_payment/lib/modules/payment/manage/manage_view_model.dart

@@ -1,3 +1,4 @@
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -155,7 +156,7 @@ class ManageViewModel extends _$ManageViewModel {
   void showDeleteDialog(int index) {
     DialogEngine.show(
         widget: AppDefaultDialog(
-      message: "Are you sure you want to delete this Card?",
+      message: S.current.sure_del_card,
       confirmAction: () {
         ToastEngine.show("点击了确定");
       },

+ 3 - 1
packages/cpt_payment/lib/modules/payment/payment/item_payment_list.dart

@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import 'payment_list_types.dart';
 
@@ -29,7 +30,7 @@ class PaymentListItem extends StatelessWidget {
         borderRadius: BorderRadius.circular(6.0), // 圆角
         boxShadow: [
           BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
+            color: context.appColors.itemBGShadow, // 阴影颜色
             offset: const Offset(0, 3), // 阴影的偏移量
             blurRadius: 8.0, // 模糊半径
             spreadRadius: 3.0, // 扩散半径
@@ -44,6 +45,7 @@ class PaymentListItem extends StatelessWidget {
             PaymentListTypes.iconMap[item.type]?['icon_path'],
             width: PaymentListTypes.iconMap[item.type]?['width'],
             height: PaymentListTypes.iconMap[item.type]?['height'],
+            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary,darkColor: Colors.white),
           ),
 
           MyTextView(

+ 15 - 4
packages/cpt_payment/lib/modules/payment_confirm/payment_confirm_page.dart

@@ -10,6 +10,7 @@ import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../../router/page/payment_page_router.dart';
 import 'payment_confirm_view_model.dart';
@@ -48,7 +49,12 @@ class PaymentConfirmPage extends HookConsumerWidget {
                 //金额
                 Row(
                   children: [
-                    const MyAssetImage(Assets.paymentInfoDetails, width: 27, height: 27),
+                    MyAssetImage(
+                      Assets.paymentInfoDetails,
+                      width: 27,
+                      height: 27,
+                      color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+                    ),
                     MyTextView(
                       S.current.payment_details,
                       textColor: context.appColors.textBlack,
@@ -86,7 +92,12 @@ class PaymentConfirmPage extends HookConsumerWidget {
                 // DESC
                 Row(
                   children: [
-                    const MyAssetImage(Assets.paymentInfoNotes, width: 27, height: 27),
+                    MyAssetImage(
+                      Assets.paymentInfoNotes,
+                      width: 27,
+                      height: 27,
+                      color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+                    ),
                     MyTextView(
                       S.current.notes_to_recipient,
                       textColor: context.appColors.textBlack,
@@ -108,7 +119,7 @@ class PaymentConfirmPage extends HookConsumerWidget {
                   isFontRegular: true,
                 ),
 
-                _paymentInfo(context,ref),
+                _paymentInfo(context, ref),
               ],
             ),
           ).expanded(),
@@ -131,7 +142,7 @@ class PaymentConfirmPage extends HookConsumerWidget {
   }
 
   //底部的支付信息
-  Widget _paymentInfo(BuildContext context,WidgetRef ref) {
+  Widget _paymentInfo(BuildContext context, WidgetRef ref) {
     final viewModel = ref.watch(paymentConfirmViewModelProvider.notifier);
 
     return Container(

+ 15 - 4
packages/cpt_payment/lib/modules/payment_info/payment_info_page.dart

@@ -11,6 +11,7 @@ import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 import 'package:widgets/widget_export.dart';
 import '../../router/page/payment_page_router.dart';
 import 'payment_info_view_model.dart';
@@ -50,9 +51,14 @@ class PaymentInfoPage extends HookConsumerWidget {
                       //金额
                       Row(
                         children: [
-                          const MyAssetImage(Assets.paymentInfoDetails, width: 27, height: 27),
+                          MyAssetImage(
+                            Assets.paymentInfoDetails,
+                            width: 27,
+                            height: 27,
+                            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+                          ),
                           MyTextView(
-                             S.current.payment_details,
+                            S.current.payment_details,
                             textColor: context.appColors.textBlack,
                             fontSize: 17,
                             marginLeft: 14,
@@ -81,14 +87,19 @@ class PaymentInfoPage extends HookConsumerWidget {
 
                       Container(
                         height: 0.5,
-                        margin: const EdgeInsets.only(top: 22,bottom: 13.5),
+                        margin: const EdgeInsets.only(top: 22, bottom: 13.5),
                         color: context.appColors.dividerDefault,
                       ),
 
                       // DESC
                       Row(
                         children: [
-                          const MyAssetImage(Assets.paymentInfoNotes, width: 27, height: 27),
+                          MyAssetImage(
+                            Assets.paymentInfoNotes,
+                            width: 27,
+                            height: 27,
+                            color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
+                          ),
                           MyTextView(
                             S.current.notes_to_recipient,
                             textColor: context.appColors.textBlack,

+ 3 - 2
packages/cpt_payment/lib/modules/payment_success/payment_success_page.dart

@@ -9,6 +9,7 @@ import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/utils/dark_theme_util.dart';
 
 import '../../router/page/payment_page_router.dart';
 import 'payment_success_view_model.dart';
@@ -17,7 +18,6 @@ import 'payment_success_view_model.dart';
 class PaymentSuccessPage extends HookConsumerWidget {
   const PaymentSuccessPage({Key? key}) : super(key: key);
 
-
   //启动并关闭其他栈
   static void startWithPop() {
     appRouter.pushAndPopUntil(
@@ -40,10 +40,11 @@ class PaymentSuccessPage extends HookConsumerWidget {
         child: Column(
           children: [
             //成功图片
-            const MyAssetImage(
+            MyAssetImage(
               Assets.facilityPaymentSuccessIcon,
               width: 54,
               height: 54,
+              color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
             ).marginOnly(top: 11, bottom: 13),
 
             //支付成功

+ 30 - 30
packages/cpt_profile/lib/modules/change_mobile/change_mobile_page.dart

@@ -5,6 +5,8 @@ import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:plugin_basic/dialog/country_code_selecter.dart';
+import 'package:plugin_basic/provider/user_config/user_config_service.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
@@ -62,33 +64,31 @@ class ChangeMobilePage extends HookConsumerWidget {
                 mainAxisSize: MainAxisSize.max,
                 crossAxisAlignment: CrossAxisAlignment.center,
                 children: [
-                  const MyAssetImage(
-                    Assets.authCountrySg,
-                    width: 45,
-                    height: 30,
-                  ),
-                  MyTextView(
-                    "+65",
-                    textColor: context.appColors.textBlack,
-                    fontSize: 18.5,
-                    marginLeft: 15,
-                    marginRight: 12,
-                    isFontMedium: true,
-                  ),
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    countryCode: UserConfigService.getState().user?.information?.countryCode ?? "+65",
+                    isEnable: false,
+                    onChanged: (countryCode) {},
+                  ).marginOnly(left: 15),
+
                   //电话输入框
                   _buildInputLayout(
                     context,
                     state,
                     "old",
                     enable: false,
+                    fillBGColor: Colors.transparent,
                     textInputType: TextInputType.number,
-                    textInputAction: TextInputAction.next,
+                    textInputAction: TextInputAction.done,
                     onSubmit: (formKey, value) {
                       state.formData[formKey]!['focusNode'].unfocus();
-                      FocusScope.of(context).requestFocus(state.formData['old_code']!['focusNode']);
+                      FocusScope.of(context).requestFocus(state.formData['new']!['focusNode']);
                     },
                   ).expanded(),
                 ],
+              ).decorated(
+                color: context.appColors.authFiledBG,
+                borderRadius: BorderRadius.circular(5.0),
               ),
 
               //新电话
@@ -106,32 +106,31 @@ class ChangeMobilePage extends HookConsumerWidget {
                 mainAxisSize: MainAxisSize.max,
                 crossAxisAlignment: CrossAxisAlignment.center,
                 children: [
-                  const MyAssetImage(
-                    Assets.authCountrySg,
-                    width: 45,
-                    height: 30,
-                  ),
-                  MyTextView(
-                    "+65",
-                    textColor: context.appColors.textBlack,
-                    fontSize: 18.5,
-                    marginLeft: 15,
-                    marginRight: 12,
-                    isFontMedium: true,
-                  ),
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    margin: const EdgeInsets.only(left: 0, right: 0, top: 5),
+                    onChanged: (countryCode) {
+                      viewModel.saveNewCountryCode(countryCode);
+                    },
+                  ).marginOnly(left: 15),
+
                   //电话输入框
                   _buildInputLayout(
                     context,
                     state,
                     "new",
+                    fillBGColor: Colors.transparent,
                     textInputType: TextInputType.number,
-                    textInputAction: TextInputAction.next,
+                    textInputAction: TextInputAction.done,
                     onSubmit: (formKey, value) {
                       state.formData[formKey]!['focusNode'].unfocus();
                       FocusScope.of(context).requestFocus(state.formData['new_code']!['focusNode']);
                     },
                   ).expanded(),
                 ],
+              ).decorated(
+                color: context.appColors.authFiledBG,
+                borderRadius: BorderRadius.circular(5.0),
               ),
 
               //新手机的验证码
@@ -199,13 +198,14 @@ class ChangeMobilePage extends HookConsumerWidget {
     String? errorText,
     bool obscureText = false,
     bool enable = true,
+    Color? fillBGColor,
     TextInputAction textInputAction = TextInputAction.done,
     Function? onSubmit,
   }) {
     return IgnoreKeyboardDismiss(
       child: MyTextField(
         key,
-        fillBackgroundColor: context.appColors.authFiledBG,
+        fillBackgroundColor: fillBGColor ?? context.appColors.authFiledBG,
         state.formData[key]!['value'],
         hintText: state.formData[key]!['hintText'],
         hintStyle: TextStyle(

+ 6 - 0
packages/cpt_profile/lib/modules/change_mobile/change_mobile_state.dart

@@ -16,6 +16,8 @@ class ChangeMobileState {
   String? oldCodeErrorText;
   String? newCodeErrorText;
 
+  String? newCountryCode;
+
   // ===================================  Begin  ↓  ===================================
 
   ChangeMobileState({
@@ -26,6 +28,7 @@ class ChangeMobileState {
     this.newCountdownTime = 0,
     this.oldCodeErrorText,
     this.newCodeErrorText,
+    this.newCountryCode,
   }) : formData = formData ??
             {
               'old': {
@@ -58,6 +61,8 @@ class ChangeMobileState {
     int? newCountdownTime,
     String? oldCodeErrorText,
     String? newCodeErrorText,
+
+    String? newCountryCode,
   }) {
     return ChangeMobileState(
       formData: this.formData,
@@ -67,6 +72,7 @@ class ChangeMobileState {
       newCountdownTime: newCountdownTime ?? this.newCountdownTime,
       oldCodeErrorText: oldCodeErrorText,
       newCodeErrorText: newCodeErrorText,
+      newCountryCode: newCountryCode ?? this.newCountryCode,
     );
   }
 }

+ 12 - 7
packages/cpt_profile/lib/modules/change_mobile/change_mobile_view_model.dart

@@ -1,6 +1,5 @@
 import 'dart:async';
 
-import 'package:cpt_profile/modules/setting/setting_page.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:domain/repository/auth_repository.dart';
 import 'package:domain/repository/profile_repository.dart';
@@ -16,7 +15,6 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
 import 'package:router/componentRouter/component_service_manager.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:shared/utils/util.dart';
-import 'package:widgets/widget_export.dart';
 
 import 'change_mobile_state.dart';
 
@@ -73,7 +71,7 @@ class ChangeMobileViewModel extends _$ChangeMobileViewModel with DioCancelableMi
     //执行密码登录
     final result = await _profileRepository.changeMobilePhone(
       smsCode: newCode,
-      countryCode: AppConstant.countryCode,
+      countryCode: state.newCountryCode,
       phone: newMobile,
       cancelToken: cancelToken,
     );
@@ -105,17 +103,17 @@ class ChangeMobileViewModel extends _$ChangeMobileViewModel with DioCancelableMi
       widget: VerifyCodeDialog(
         confirmAction: (key, code) {
           //发送短信验证码
-          _sendSMS(phone, key, code);
+          _sendSMS("${state.newCountryCode}$phone", key, code);
         },
       ),
     );
   }
 
   /// 调用接口发送短信验证码
-  void _sendSMS(String phone, String? key, String? code) async {
+  void _sendSMS(String fullPhone, String? key, String? code) async {
     final result = await _authRepository.sendSMS(
-      countryCode: AppConstant.countryCode,
-      phone: phone,
+      countryCode: Utils.getMobileCode(fullPhone ?? ""),
+      phone: Utils.getRealMobile(fullPhone ?? ""),
       captchaKey: key,
       captchaValue: code,
       cancelToken: cancelToken,
@@ -175,4 +173,11 @@ class ChangeMobileViewModel extends _$ChangeMobileViewModel with DioCancelableMi
 
     Log.d("ChangeMobileViewModel 销毁 onDispose");
   }
+
+  //保存当前选择的国家区号
+  void saveNewCountryCode(String? countryCode) {
+    state = state.copyWith(newCountryCode: countryCode);
+    Log.d("saveCountryCode:${state.newCountryCode}");
+  }
+
 }

+ 14 - 11
packages/cpt_profile/lib/modules/my_estate/item_estate.dart

@@ -77,16 +77,20 @@ class EstateItem extends StatelessWidget {
                 height: 0.5,
                 color: context.appColors.backgroundDark,
               ),
-              Center(
-                child: MyTextView(
-                  S.current.remove,
-                  paddingTop: 16,
-                  paddingBottom: 16,
-                  fontSize: 16,
-                  onClick: deleteAction,
-                  isFontMedium: true,
-                  textColor: context.appColors.textPrimary,
-                ),
+              Row(
+                children: [
+                  MyTextView(
+                    S.current.remove,
+                    paddingTop: 16,
+                    paddingBottom: 16,
+                    fontSize: 16,
+                    textAlign: TextAlign.center,
+                    onClick: deleteAction,
+                    isFontMedium: true,
+                    textColor: context.appColors.textPrimary,
+                  ).expanded(),
+                ],
+
               )
             ],
           ),
@@ -102,7 +106,6 @@ class EstateItem extends StatelessWidget {
         MyTextView(
           S.current.approved,
           fontSize: 16,
-          onClick: deleteAction,
           isFontMedium: true,
           textColor: context.appColors.textGreen,
         ).marginOnly(top: childIndex == 0 ? 46.5 : 56.5, right: 15).alignRight()

+ 1 - 1
packages/cpt_profile/lib/modules/my_estate/my_estate_view_model.dart

@@ -97,7 +97,7 @@ class MyEstateViewModel extends _$MyEstateViewModel with DioCancelableMixin {
   void showRemoveEstateDialog(String? unitId) {
     DialogEngine.show(widget: RemoveAccountDialog(
       confirmAction: () {
-        _doDeleteEstateUnit(unitId);
+        // _doDeleteEstateUnit(unitId);
       },
     ));
   }

+ 18 - 17
packages/cpt_profile/lib/modules/reset_password/reset_password_page.dart

@@ -6,6 +6,8 @@ import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:plugin_basic/dialog/country_code_selecter.dart';
+import 'package:plugin_basic/provider/user_config/user_config_service.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
@@ -64,33 +66,31 @@ class ResetPasswordPage extends HookConsumerWidget {
                 mainAxisSize: MainAxisSize.max,
                 crossAxisAlignment: CrossAxisAlignment.center,
                 children: [
-                  const MyAssetImage(
-                    Assets.authCountrySg,
-                    width: 45,
-                    height: 30,
-                  ),
-                  MyTextView(
-                    "+65",
-                    textColor: context.appColors.textBlack,
-                    fontSize: 18.5,
-                    marginLeft: 15,
-                    marginRight: 12,
-                    isFontMedium: true,
-                  ),
+                  //封装的国家选择控件
+                  CountryCodeSelector(
+                    countryCode: UserConfigService.getState().user?.information?.countryCode ?? "+65",
+                    isEnable: false,
+                    onChanged: (countryCode) {},
+                  ).marginOnly(left: 15),
+
                   //电话输入框
                   _buildInputLayout(
                     context,
                     state,
                     "phone",
                     enable: false,
+                    fillBGColor: Colors.transparent,
                     textInputType: TextInputType.number,
-                    textInputAction: TextInputAction.next,
+                    textInputAction: TextInputAction.done,
                     onSubmit: (formKey, value) {
                       state.formData[formKey]!['focusNode'].unfocus();
                       FocusScope.of(context).requestFocus(state.formData['code']!['focusNode']);
                     },
                   ).expanded(),
                 ],
+              ).decorated(
+                color: context.appColors.authFiledBG,
+                borderRadius: BorderRadius.circular(5.0),
               ),
 
               //手机的验证码
@@ -149,7 +149,7 @@ class ResetPasswordPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.pwdVisibility
+                  icon: !state.pwdVisibility
                       ? const MyAssetImage(
                     Assets.authPasswordHide,
                     width: 22.5,
@@ -191,7 +191,7 @@ class ResetPasswordPage extends HookConsumerWidget {
                 rightWidget: IconButton(
                   highlightColor: Colors.transparent,
                   splashColor: Colors.transparent,
-                  icon: state.confirmPwdVisibility
+                  icon: !state.confirmPwdVisibility
                       ? const MyAssetImage(
                     Assets.authPasswordHide,
                     width: 22.5,
@@ -243,13 +243,14 @@ class ResetPasswordPage extends HookConsumerWidget {
         String? errorText,
         bool obscureText = false,
         bool enable = true,
+        Color? fillBGColor,
         TextInputAction textInputAction = TextInputAction.done,
         Function? onSubmit,
       }) {
     return IgnoreKeyboardDismiss(
       child: MyTextField(
         key,
-        fillBackgroundColor: context.appColors.authFiledBG,
+        fillBackgroundColor: fillBGColor ?? context.appColors.authFiledBG,
         state.formData[key]!['value'],
         hintText: state.formData[key]!['hintText'],
         hintStyle: TextStyle(

+ 1 - 1
packages/cpt_profile/lib/modules/reset_password/reset_password_view_model.dart

@@ -132,7 +132,7 @@ class ResetPasswordViewModel extends _$ResetPasswordViewModel {
   /// 调用接口发送短信验证码
   void _sendSMS(String phone, String? key, String? code) async {
     final result = await authRepository.sendSMS(
-      countryCode: AppConstant.countryCode,
+      countryCode: UserConfigService.getState().user?.information?.countryCode ?? "+65",
       phone: phone,
       captchaKey: key,
       captchaValue: code,

+ 2 - 1
packages/cpt_profile/lib/modules/setting/setting_view_model.dart

@@ -2,6 +2,7 @@ import 'package:cpt_profile/modules/change_mobile/change_mobile_page.dart';
 import 'package:cpt_profile/modules/reset_password/reset_password_page.dart';
 import 'package:cpt_profile/modules/setting/dialog/account_deactivation_dialog.dart';
 import 'package:cpt_profile/modules/setting/setting_state.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:plugin_basic/constants/app_constant.dart';
 import 'package:plugin_basic/provider/user_config/user_config_service.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
@@ -38,7 +39,7 @@ class SettingViewModel extends _$SettingViewModel {
   void doLogout() {
     DialogEngine.show(
         widget: AppDefaultDialog(
-      message: "Are you sure you want to logout?",
+      message: S.current.logout_alert,
       confirmAction: () {
         //清除用户登录信息
         UserConfigService.getInstance().handleLogoutParams();

+ 19 - 19
packages/cpt_property/lib/modules/ioan/property_ioan_page.dart

@@ -1,4 +1,5 @@
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -33,14 +34,14 @@ class PropertyIoanPage extends HookConsumerWidget {
     return Column(
       children: [
         MyTextView(
-          "YY Home",
+          "24IFM",
           textColor: context.appColors.textBlack,
           fontSize: 27,
           isFontMedium: true,
           textAlign: TextAlign.center,
         ),
         MyTextView(
-          "Find the best home loan for you",
+          S.current.find_best_loan,
           textColor: context.appColors.textBlack,
           fontSize: 16,
           isFontRegular: true,
@@ -61,7 +62,7 @@ class PropertyIoanPage extends HookConsumerWidget {
           child: Column(
             children: [
               MyTextView(
-                "YY Home exclusive rates:",
+                S.current.exclusive_rates,
                 textColor: ColorUtils.string2Color('#FEFEFE'),
                 fontSize: 15,
                 boxWidth: 237,
@@ -69,7 +70,7 @@ class PropertyIoanPage extends HookConsumerWidget {
                 alignment: Alignment.center,
                 textAlign: TextAlign.center,
                 marginTop: 5.5,
-                backgroundColor: ColorUtils.string2Color('#4161D0')
+                backgroundColor: context.appColors.textPrimary
               ),
               Expanded(
                 child: Row(
@@ -79,7 +80,7 @@ class PropertyIoanPage extends HookConsumerWidget {
                         width: 105,
                         height: 105,
                         padding: const EdgeInsets.all(5),
-                        color: ColorUtils.string2Color('#4161D0'),
+                        color: context.appColors.textPrimary,
                         child: Column(
                           mainAxisAlignment: MainAxisAlignment.center,
                           crossAxisAlignment: CrossAxisAlignment.center,
@@ -90,7 +91,7 @@ class PropertyIoanPage extends HookConsumerWidget {
                               fontSize: 30,
                             ),
                             MyTextView(
-                              "Lowest Floating Rate",
+                              S.current.lowest_floating_rate,
                               textColor: ColorUtils.string2Color('#FEFEFE'),
                               fontSize: 14,
                               textAlign: TextAlign.center,
@@ -102,7 +103,7 @@ class PropertyIoanPage extends HookConsumerWidget {
                         width: 105,
                         height: 105,
                         padding: const EdgeInsets.all(5),
-                        color: ColorUtils.string2Color('#4161D0'),
+                        color: context.appColors.textPrimary,
                         margin: const EdgeInsets.only(left: 18),
                         child: Column(
                             mainAxisAlignment: MainAxisAlignment.center,
@@ -114,7 +115,7 @@ class PropertyIoanPage extends HookConsumerWidget {
                                 fontSize: 30,
                               ),
                               MyTextView(
-                                "Lowest Floating Rate",
+                                S.current.lowest_floating_rate,
                                 textColor: ColorUtils.string2Color('#FEFEFE'),
                                 fontSize: 14,
                                 textAlign: TextAlign.center,
@@ -129,14 +130,14 @@ class PropertyIoanPage extends HookConsumerWidget {
           ),
         ),
         MyTextView(
-          "Check out what others are offering:",
+          S.current.other_offering,
           textColor: ColorUtils.string2Color('#FEFEFE'),
           fontSize: 15,
           boxWidth: double.infinity,
           boxHeight: 40.5,
           alignment: Alignment.center,
           textAlign: TextAlign.center,
-          backgroundColor: ColorUtils.string2Color('#4161D0'),
+          backgroundColor: context.appColors.textPrimary,
         ),
 
         const SizedBox(height: 20),
@@ -158,20 +159,19 @@ class PropertyIoanPage extends HookConsumerWidget {
                   crossAxisAlignment: CrossAxisAlignment.start,
                   children: [
                     Row(
-                      mainAxisAlignment: MainAxisAlignment.center,
+                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                       children: [
                         MyTextView(
-                          "Floating",
+                          S.current.floating_rate,
                           textColor: context.appColors.textBlack,
                           fontSize: 14,
                           textAlign: TextAlign.center,
                         ),
                         MyTextView(
-                          "Fixed",
+                          S.current.fixed_rate,
                           textColor: context.appColors.textBlack,
                           fontSize: 14,
                           textAlign: TextAlign.center,
-                          marginLeft: 50.5,
                         ),
                       ],
                     ),
@@ -261,7 +261,7 @@ class PropertyIoanPage extends HookConsumerWidget {
     return Column(
         children: [
           MyTextView(
-            "The right advice to help you choose the best package in the market!",
+            S.current.choose_best_package,
             textColor: context.appColors.textBlack,
             fontSize: 18,
             isFontMedium: true,
@@ -270,7 +270,7 @@ class PropertyIoanPage extends HookConsumerWidget {
             textAlign: TextAlign.center,
           ),
           MyTextView(
-            "-No Hidden Fees, We Are Out ToHelp You!-Interest Savings With Lowest RatesGuarantee-One-Stop Access to All The BanksPackages",
+            S.current.text_no_hidden_fees,
             textColor: context.appColors.textBlack,
             fontSize: 15,
             textAlign: TextAlign.center,
@@ -287,7 +287,7 @@ class PropertyIoanPage extends HookConsumerWidget {
       child: Column(
         children: [
           MyTextView(
-           "What do we offer?",
+           S.current.what_do_we_offer,
             textColor: context.appColors.textBlack,
             fontSize: 18,
             isFontMedium: true,
@@ -334,7 +334,7 @@ class PropertyIoanPage extends HookConsumerWidget {
       crossAxisAlignment: CrossAxisAlignment.center,
       children: [
         MyTextView(
-          "Our Partners",
+          S.current.our_partners,
           textColor: context.appColors.textBlack,
           fontSize: 18,
           isFontMedium: true,
@@ -397,7 +397,7 @@ class PropertyIoanPage extends HookConsumerWidget {
           //   visible: state.loadingState == LoadState.State_Success,
           //   child: Container(
           //     height: 50,
-          //     color: ColorUtils.string2Color('#4161D0'),
+          //     color: context.appColors.textPrimary,
           //     child: Row(
           //       mainAxisAlignment: MainAxisAlignment.center,
           //       children: [

+ 32 - 72
packages/cpt_property/lib/modules/ioan/property_ioan_vm.dart

@@ -1,5 +1,5 @@
-
 import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
@@ -21,69 +21,38 @@ class PropertyIoanVm extends _$PropertyIoanVm {
 
   // Refresh 控制器
   final EasyRefreshController refreshController = EasyRefreshController(
-    controlFinishRefresh: true,  //允许刷新
-    controlFinishLoad: true,   //允许加载
+    controlFinishRefresh: true, //允许刷新
+    controlFinishLoad: true, //允许加载
   );
 
-
   PropertyIoanState initState() {
     return PropertyIoanState(
-        lowestFloatingRate: "3.79%",
-        lowestFixedRate: "2.48%",
-        othersOfferingPic: "",
-        othersOfferingInfoList: [
-          {
-            "floating": "3.08%",
-            "fixed": "3.79%",
-          },
-          {
-            "floating": "3.08%",
-            "fixed": "3.79%",
-          }
-        ],
-        offerTextInfoList: [
-            {
-              "title": "New HomeLoans",
-              "icon": Assets.propertyNewHomeLoans,
-              "iconWidth": 46.0,
-              "iconHeight": 42.5
-            },
-            {
-              "title": "Refinancing",
-              "icon": Assets.propertyRefinancing,
-              "iconWidth": 37.0,
-              "iconHeight": 41.5
-            },
-            {
-              "title": "Home EquityLoans",
-              "icon": Assets.propertyHomeEquityLoans,
-              "iconWidth": 41.5,
-              "iconHeight": 42.5
-            },
-            {
-              "title": "ConveyancingLawyer",
-              "icon": Assets.propertyConveyancingLawyer,
-              "iconWidth": 42.0,
-              "iconHeight": 42.0
-            },
-            {
-              "title": "Approval in Principle",
-              "icon": Assets.propertyApproval,
-              "iconWidth": 41.0,
-              "iconHeight": 39.0
-            },
-            {
-              "title": "OverseasHome Loan",
-              "icon": Assets.propertyOverseasHomeLoan,
-              "iconWidth": 36.0,
-              "iconHeight": 39.0
-            }
-        ]
+      lowestFloatingRate: "3.79%",
+      lowestFixedRate: "2.48%",
+      othersOfferingPic: "",
+      othersOfferingInfoList: [
+        {
+          "floating": "3.08%",
+          "fixed": "3.79%",
+        },
+        {
+          "floating": "3.08%",
+          "fixed": "3.79%",
+        }
+      ],
+      offerTextInfoList: [
+        {"title": S.current.new_homeLoans, "icon": Assets.propertyNewHomeLoans, "iconWidth": 46.0, "iconHeight": 42.5},
+        {"title": S.current.refinancing, "icon": Assets.propertyRefinancing, "iconWidth": 37.0, "iconHeight": 41.5},
+        {"title": S.current.home_equity_loans, "icon": Assets.propertyHomeEquityLoans, "iconWidth": 41.5, "iconHeight": 42.5},
+        {"title": S.current.conveyancing_lawyer, "icon": Assets.propertyConveyancingLawyer, "iconWidth": 42.0, "iconHeight": 42.0},
+        {"title": S.current.approval_in_principle, "icon": Assets.propertyApproval, "iconWidth": 41.0, "iconHeight": 39.0},
+        {"title": S.current.overseas_home_loan, "icon": Assets.propertyOverseasHomeLoan, "iconWidth": 36.0, "iconHeight": 39.0}
+      ],
     );
   }
 
   @override
-  PropertyIoanState build(){
+  PropertyIoanState build() {
     // 引入数据仓库
     // propertyIoanRepository = ref.read(propertyIoanRepositoryProvider);
     // 初始化状态
@@ -94,10 +63,7 @@ class PropertyIoanVm extends _$PropertyIoanVm {
 
   //刷新页面状态
   void changeLoadingState(LoadState loadState, String? errorMsg) {
-    state = state.copyWith(
-        loadingState: loadState,
-        errorMessage: errorMsg
-    );
+    state = state.copyWith(loadingState: loadState, errorMessage: errorMsg);
   }
 
   // 重试请求
@@ -112,7 +78,6 @@ class PropertyIoanVm extends _$PropertyIoanVm {
     featchData();
   }
 
-
   Future featchData() async {
     await Future.delayed(const Duration(milliseconds: 1500));
     //更新展示的状态
@@ -121,12 +86,12 @@ class PropertyIoanVm extends _$PropertyIoanVm {
     _needShowPlaceholder = false;
   }
 
-  requestQuoteConfirmAction(){
+  requestQuoteConfirmAction() {
     Log.d("点击了确定");
     DialogEngine.dismiss(tag: "requestQuote");
   }
 
-  requestQuoteCancelAction(){
+  requestQuoteCancelAction() {
     Log.d("点击了取消");
   }
 
@@ -141,11 +106,8 @@ class PropertyIoanVm extends _$PropertyIoanVm {
         cancelAction: requestQuoteCancelAction,
         messageBuilder: (context) {
           return Container(
-            padding: const EdgeInsets.only(left: 15,right: 15),
-            child: Column(
-              mainAxisAlignment: MainAxisAlignment.start,
-              crossAxisAlignment: CrossAxisAlignment.start,
-              children: [
+              padding: const EdgeInsets.only(left: 15, right: 15),
+              child: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [
                 MyTextView(
                   "Submit Request?",
                   textColor: context.appColors.textBlack,
@@ -162,15 +124,13 @@ class PropertyIoanVm extends _$PropertyIoanVm {
                   // maxLines: 5,
                 ),
                 MyTextView(
-                  "This is a complementary servicebrought to you by YY Home",
+                  "This is a complementary service brought to you by 24IFM",
                   textColor: ColorUtils.string2Color('#666666'),
                   textAlign: TextAlign.left,
                   // maxLines: 5,
                   marginTop: 15,
                 ),
-              ]
-            )
-          );
+              ]));
         },
       ),
     );

+ 0 - 0
packages/cpt_property/lib/modules/news/page/property_news_page.dart


Some files were not shown because too many files changed in this diff