Преглед изворни кода

[new]增加关于我们界面

zk пре 8 месеци
родитељ
комит
4f22262bc7

+ 1 - 0
assets/string/base/string.xml

@@ -236,4 +236,5 @@
     </string>
     <string name="logout_account">注销账号</string>
     <string name="account_logout_success">注销成功</string>
+    <string name="record_number">备案号:皖ICP备2023011908号-2A</string>
 </resources>

+ 0 - 2
lib/data/consts/web_url.dart

@@ -14,8 +14,6 @@ class WebUrl {
 
   static String get privacyPolicy => _privacyPolicy;
 
-  static String get privacyPolicyIos => _privacyPolicyIos;
-
   static String get userAgreement => _userAgreement;
 
   static String get shareUrl => _shareUrl;

+ 0 - 125
lib/di/get_it.config.dart

@@ -1,125 +0,0 @@
-// GENERATED CODE - DO NOT MODIFY BY HAND
-
-// **************************************************************************
-// InjectableConfigGenerator
-// **************************************************************************
-
-// ignore_for_file: type=lint
-// coverage:ignore-file
-
-// ignore_for_file: no_leading_underscores_for_library_prefixes
-import 'package:dio/dio.dart' as _i361;
-import 'package:get_it/get_it.dart' as _i174;
-import 'package:injectable/injectable.dart' as _i526;
-
-import '../data/api/atmob_api.dart' as _i243;
-import '../data/repositories/account_repository.dart' as _i20;
-import '../data/repositories/config_repository.dart' as _i825;
-import '../data/repositories/contact_repository.dart' as _i850;
-import '../data/repositories/friends_repository.dart' as _i1053;
-import '../data/repositories/message_repository.dart' as _i791;
-import '../data/repositories/track_repository.dart' as _i240;
-import '../data/repositories/urgent_contact_repository.dart' as _i983;
-import '../module/add_friend/add_friend_dialog_controller.dart' as _i897;
-import '../module/browser/browser_controller.dart' as _i923;
-import '../module/feedback/feed_back_controller.dart' as _i769;
-import '../module/friend/friend_controller.dart' as _i821;
-import '../module/friend/setting/friend_setting_controller.dart' as _i492;
-import '../module/login/login_controller.dart' as _i1008;
-import '../module/main/main_controller.dart' as _i731;
-import '../module/member/member_controller.dart' as _i269;
-import '../module/mine/mine_controller.dart' as _i732;
-import '../module/news/news_controller.dart' as _i489;
-import '../module/news/pending_list/news_pending_list_controller.dart' as _i433;
-import '../module/splash/splash_controller.dart' as _i973;
-import '../module/track/track_controller.dart' as _i518;
-import '../module/urgent_contact/add_contact/add_urgent_contact_controller.dart'
-    as _i955;
-import '../module/urgent_contact/urgent_contact_controller.dart' as _i720;
-import '../socket/atmob_location_client.dart' as _i220;
-import 'network_module.dart' as _i567;
-
-extension GetItInjectableX on _i174.GetIt {
-// initializes the registration of main-scope dependencies inside of GetIt
-  _i174.GetIt init({
-    String? environment,
-    _i526.EnvironmentFilter? environmentFilter,
-  }) {
-    final gh = _i526.GetItHelper(
-      this,
-      environment,
-      environmentFilter,
-    );
-    final networkModule = _$NetworkModule();
-    gh.factory<_i923.BrowserController>(() => _i923.BrowserController());
-    gh.factory<_i769.FeedBackController>(() => _i769.FeedBackController());
-    gh.factory<_i269.MemberController>(() => _i269.MemberController());
-    gh.factory<_i973.SplashController>(() => _i973.SplashController());
-    gh.singleton<_i361.Dio>(() => networkModule.createDefaultDio());
-    gh.lazySingleton<_i220.AtmobLocationClient>(
-        () => _i220.AtmobLocationClient());
-    gh.singleton<_i243.AtmobApi>(
-        () => networkModule.provideAtmobApi(gh<_i361.Dio>()));
-    gh.lazySingleton<_i20.AccountRepository>(
-        () => _i20.AccountRepository(gh<_i243.AtmobApi>()));
-    gh.lazySingleton<_i850.ContactRepository>(
-        () => _i850.ContactRepository(gh<_i243.AtmobApi>()));
-    gh.lazySingleton<_i1053.FriendsRepository>(
-        () => _i1053.FriendsRepository(gh<_i243.AtmobApi>()));
-    gh.lazySingleton<_i791.MessageRepository>(
-        () => _i791.MessageRepository(gh<_i243.AtmobApi>()));
-    gh.lazySingleton<_i240.TrackRepository>(
-        () => _i240.TrackRepository(gh<_i243.AtmobApi>()));
-    gh.lazySingleton<_i983.UrgentContactRepository>(
-        () => _i983.UrgentContactRepository(gh<_i243.AtmobApi>()));
-    gh.factory<_i1008.LoginController>(
-        () => _i1008.LoginController(gh<_i20.AccountRepository>()));
-    gh.factory<_i732.MineController>(
-        () => _i732.MineController(gh<_i20.AccountRepository>()));
-    gh.factory<_i489.NewsController>(
-        () => _i489.NewsController(gh<_i791.MessageRepository>()));
-    gh.lazySingleton<_i825.ConfigRepository>(() => _i825.ConfigRepository(
-          gh<_i243.AtmobApi>(),
-          gh<_i1053.FriendsRepository>(),
-        ));
-    gh.factory<_i821.FriendController>(() => _i821.FriendController(
-          gh<_i20.AccountRepository>(),
-          gh<_i1053.FriendsRepository>(),
-        ));
-    gh.factory<_i518.TrackController>(() => _i518.TrackController(
-          gh<_i240.TrackRepository>(),
-          gh<_i1053.FriendsRepository>(),
-          gh<_i20.AccountRepository>(),
-        ));
-    gh.factory<_i433.NewsPendingListController>(
-        () => _i433.NewsPendingListController(
-              gh<_i791.MessageRepository>(),
-              gh<_i1053.FriendsRepository>(),
-            ));
-    gh.factory<_i731.MainController>(() => _i731.MainController(
-          gh<_i1053.FriendsRepository>(),
-          gh<_i20.AccountRepository>(),
-          gh<_i791.MessageRepository>(),
-          gh<_i220.AtmobLocationClient>(),
-          gh<_i983.UrgentContactRepository>(),
-          gh<_i825.ConfigRepository>(),
-        ));
-    gh.factory<_i955.AddUrgentContactController>(
-        () => _i955.AddUrgentContactController(
-              gh<_i983.UrgentContactRepository>(),
-              gh<_i20.AccountRepository>(),
-            ));
-    gh.factory<_i720.UrgentContactController>(
-        () => _i720.UrgentContactController(
-              gh<_i983.UrgentContactRepository>(),
-              gh<_i20.AccountRepository>(),
-            ));
-    gh.factory<_i897.AddFriendDialogController>(
-        () => _i897.AddFriendDialogController(gh<_i1053.FriendsRepository>()));
-    gh.factory<_i492.FriendSettingController>(
-        () => _i492.FriendSettingController(gh<_i1053.FriendsRepository>()));
-    return this;
-  }
-}
-
-class _$NetworkModule extends _i567.NetworkModule {}

+ 2 - 10
lib/dialog/agreement_dialog.dart

@@ -112,11 +112,7 @@ class _AgreementDialog extends Dialog {
               style: TextStyle(color: '#2F79FF'.color),
               recognizer: TapGestureRecognizer()
                 ..onTap = () {
-                  if (GetPlatform.isIOS) {
-                    BrowserPage.start(WebUrl.privacyPolicyIos);
-                  } else {
-                    BrowserPage.start(WebUrl.privacyPolicy);
-                  }
+                  BrowserPage.start(WebUrl.privacyPolicy);
                 },
             ),
             const TextSpan(
@@ -151,11 +147,7 @@ class _AgreementDialog extends Dialog {
               style: TextStyle(color: '#2F79FF'.color),
               recognizer: TapGestureRecognizer()
                 ..onTap = () {
-                  if (GetPlatform.isIOS) {
-                    BrowserPage.start(WebUrl.privacyPolicyIos);
-                  } else {
-                    BrowserPage.start(WebUrl.privacyPolicy);
-                  }
+                  BrowserPage.start(WebUrl.privacyPolicy);
                 },
             ),
             const TextSpan(

+ 21 - 0
lib/module/about/about_controller.dart

@@ -0,0 +1,21 @@
+import 'package:get/get.dart';
+import 'package:get/get_core/src/get_main.dart';
+import 'package:injectable/injectable.dart';
+import 'package:location/base/base_controller.dart';
+import 'package:location/data/consts/web_url.dart';
+import 'package:location/module/browser/browser_view.dart';
+
+@injectable
+class AboutController extends BaseController {
+  void back() {
+    Get.back();
+  }
+
+  void onPrivacyPolicyClick() {
+    BrowserPage.start(WebUrl.privacyPolicy);
+  }
+
+  void onTermOfServiceClick() {
+    BrowserPage.start(WebUrl.userAgreement);
+  }
+}

+ 65 - 0
lib/module/about/about_page.dart

@@ -0,0 +1,65 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/src/widgets/framework.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:get/get.dart';
+import 'package:get/get_core/src/get_main.dart';
+import 'package:location/dialog/agreement_dialog.dart';
+import 'package:location/resource/assets.gen.dart';
+import 'package:location/utils/app_info_util.dart';
+import 'package:location/utils/common_expand.dart';
+
+import '../../base/base_page.dart';
+import '../../resource/string.gen.dart';
+import '../../router/app_pages.dart';
+import '../../widget/common_view.dart';
+import 'about_controller.dart';
+
+class AboutPage extends BasePage<AboutController> {
+  const AboutPage({super.key});
+
+  static void start() {
+    Get.toNamed(RoutePath.about);
+  }
+
+  @override
+  Widget buildBody(BuildContext context) {
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.center,
+      children: [
+        CommonView.buildAppBar(StringName.mineFunAbout,
+            backOnTap: controller.back, titleCenter: false),
+        SizedBox(height: 48.w),
+        Assets.images.iconLogo.image(width: 70.w, height: 70.w),
+        SizedBox(height: 8.w),
+        Text(StringName.appName,
+            style: TextStyle(fontSize: 14.sp, color: Colors.black)),
+        SizedBox(height: 2.w),
+        Text('当前版本:${appInfoUtil.appVersionName}',
+            style: TextStyle(fontSize: 12.sp, color: '#A7A7A7'.color)),
+        Spacer(),
+        Row(
+          mainAxisAlignment: MainAxisAlignment.center,
+          children: [
+            GestureDetector(
+              onTap: () => controller.onPrivacyPolicyClick(),
+              child: Text(StringName.privacyPolicy,
+                  style: TextStyle(fontSize: 12.sp, color: '#579AFF'.color)),
+            ),
+            Text(StringName.loginEtPrivacyAnd,
+                style: TextStyle(fontSize: 12.sp, color: '#A7A7A7'.color)),
+            GestureDetector(
+              onTap: () => controller.onTermOfServiceClick(),
+              child: Text(StringName.termOfService,
+                  style: TextStyle(fontSize: 12.sp, color: '#579AFF'.color)),
+            ),
+          ],
+        ),
+        SizedBox(height: 1.w),
+        Text(StringName.recordNumber,
+            style: TextStyle(fontSize: 12.sp, color: '#A7A7A7'.color)),
+        SizedBox(height: 52.w),
+      ],
+    );
+  }
+}

+ 4 - 1
lib/module/mine/mine_controller.dart

@@ -14,6 +14,7 @@ import '../../dialog/common_confirm_dialog_impl.dart';
 import '../../sdk/qiyu/qi_yu_helper.dart';
 import '../../sdk/wechat/wechat_share_util.dart';
 import '../../utils/toast_util.dart';
+import '../about/about_page.dart';
 
 @injectable
 class MineController extends BaseController {
@@ -55,7 +56,9 @@ class MineController extends BaseController {
     FeedBackPage.start();
   }
 
-  onAboutClick() {}
+  onAboutClick() {
+    AboutPage.start();
+  }
 
   onLogoutAccountClick() {
     logoutAccountDialog(

+ 3 - 0
lib/resource/string.gen.dart

@@ -194,6 +194,8 @@ class StringName {
   static final String logoutAccountContent = 'logout_account_content'.tr; // 1.删除账号所有账号信息数据和定位记录;\n2.删除并放弃账号下的会员权益;\n3.点击“确认注销”即开始注销流程不可撤回,请慎重考虑。
   static final String logoutAccount = 'logout_account'.tr; // 注销账号
   static final String accountLogoutSuccess = 'account_logout_success'.tr; // 注销成功
+  static final String recordNumber =
+      'record_number'.tr; // 备案号:皖ICP备2023011908号-2A
 }
 class StringMultiSource {
   StringMultiSource._();
@@ -391,6 +393,7 @@ class StringMultiSource {
       'logout_account_content': '1.删除账号所有账号信息数据和定位记录;\n2.删除并放弃账号下的会员权益;\n3.点击“确认注销”即开始注销流程不可撤回,请慎重考虑。',
       'logout_account': '注销账号',
       'account_logout_success': '注销成功',
+      'record_number': '备案号:皖ICP备2023011908号-2A',
     },
   };
 }

+ 7 - 0
lib/router/app_pages.dart

@@ -1,6 +1,9 @@
 import 'package:get/get.dart';
 import 'package:location/di/get_it.dart';
+import 'package:location/module/about/about_controller.dart';
+import 'package:location/module/about/about_page.dart';
 import 'package:location/module/browser/browser_controller.dart';
+import 'package:location/module/browser/browser_view.dart';
 import 'package:location/module/feedback/feed_back_controller.dart';
 import 'package:location/module/feedback/feed_back_page.dart';
 import 'package:location/module/friend/friend_controller.dart';
@@ -46,6 +49,7 @@ abstract class RoutePath {
   static const newsPendingList = '/newsPendingList';
   static const urgentContact = '/urgentContact';
   static const feedback = '/feedback';
+  static const about = '/about';
 }
 
 class AppBinding extends Bindings {
@@ -65,6 +69,7 @@ class AppBinding extends Bindings {
     lazyPut(() => getIt.get<UrgentContactController>());
     lazyPut(() => getIt.get<AddUrgentContactController>());
     lazyPut(() => getIt.get<FeedBackController>());
+    lazyPut(() => getIt.get<AboutController>());
   }
 
   void lazyPut<S>(InstanceBuilderCallback<S> builder) {
@@ -76,6 +81,7 @@ final generalPages = [
   GetPage(name: RoutePath.splash, page: () => SplashPage()),
   GetPage(name: RoutePath.mainTab, page: () => MainPage()),
   GetPage(name: RoutePath.login, page: () => LoginPage()),
+  GetPage(name: RoutePath.browser, page: () => BrowserPage()),
   GetPage(name: RoutePath.mine, page: () => MinePage()),
   GetPage(name: RoutePath.friend, page: () => FriendPage()),
   GetPage(name: RoutePath.friendSetting, page: () => FriendSettingPage()),
@@ -85,4 +91,5 @@ final generalPages = [
   GetPage(name: RoutePath.newsPendingList, page: () => NewsPendingListPage()),
   GetPage(name: RoutePath.urgentContact, page: () => UrgentContactPage()),
   GetPage(name: RoutePath.feedback, page: () => FeedBackPage()),
+  GetPage(name: RoutePath.about, page: () => AboutPage()),
 ];