Bläddra i källkod

Merge branch 'v1.0.0' into v1.0.0-csl

# Conflicts:
#	ios/Podfile.lock
Destiny 1 år sedan
förälder
incheckning
e02c3d4a1a

+ 9 - 3
lib/module/login/controller.dart

@@ -1,6 +1,8 @@
 import 'package:electronic_assistant/base/base_controller.dart';
+import 'package:electronic_assistant/data/consts/constants.dart';
 import 'package:electronic_assistant/data/repositories/account_repository.dart';
 import 'package:electronic_assistant/dialog/alert_dialog.dart';
+import 'package:electronic_assistant/module/browser/view.dart';
 import 'package:electronic_assistant/utils/error_handler.dart';
 import 'package:electronic_assistant/utils/expand.dart';
 import 'package:electronic_assistant/utils/toast_util.dart';
@@ -60,7 +62,9 @@ class LoginController extends BaseController {
               ),
             ),
             GestureDetector(
-              onTap: () {},
+              onTap: () {
+                BrowserPage.start(Constants.privacyPolicy);
+              },
               child: Text(
                 "《隐私政策》",
                 textAlign: TextAlign.center,
@@ -81,9 +85,11 @@ class LoginController extends BaseController {
               ),
             ),
             GestureDetector(
-              onTap: () {},
+              onTap: () {
+                BrowserPage.start(Constants.userAgreement);
+              },
               child: Text(
-                "《用户试用协议》",
+                "《用户使用协议》",
                 textAlign: TextAlign.center,
                 style: TextStyle(
                   color: "#5E8BFF".toColor(),

+ 90 - 0
lib/module/splash/controller.dart

@@ -0,0 +1,90 @@
+import 'dart:async';
+import 'dart:io';
+
+import 'package:electronic_assistant/base/base_controller.dart';
+import 'package:electronic_assistant/data/consts/constants.dart';
+import 'package:electronic_assistant/module/browser/view.dart';
+import 'package:electronic_assistant/router/app_pages.dart';
+import 'package:electronic_assistant/utils/expand.dart';
+import 'package:electronic_assistant/utils/mmkv_util.dart';
+import 'package:electronic_assistant/widget/alert_dialog.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/gestures.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:get/get.dart';
+
+class SplashController extends BaseController {
+  final splashDelayedTime = 2;
+
+  @override
+  void onReady() {
+    // TODO: implement onInit
+    super.onReady();
+
+    final isAgreePrivacy = KVUtil.getBool('isAgreePrivacyKey', false);
+    if (isAgreePrivacy) {
+      Timer(Duration(seconds: splashDelayedTime), () {
+        Get.offNamed(RoutePath.mainTab);
+      });
+    } else {
+      EAAlertDialog.show(
+        title: "隐私政策及权限说明",
+        contentWidget: RichText(
+          textAlign: TextAlign.left,
+          text: TextSpan(
+            style: TextStyle(
+              color: "#5F5F61".toColor(),
+              fontSize: 14,
+              decoration: TextDecoration.none,
+            ),
+            children: [
+              const TextSpan(
+                text:
+                    "为了更好地为您服务,我们可能向系统申请一些必要权限,用于基本服务和功能。我们非常重视您的隐私和个人信息,请使用之前请仔细阅读",
+              ),
+              TextSpan(
+                text: "《隐私政策》",
+                style: TextStyle(
+                  color: "#5E8BFF".toColor(),
+                  decoration: TextDecoration.none,
+                ),
+                recognizer: TapGestureRecognizer()
+                  ..onTap = () {
+                    BrowserPage.start(Constants.privacyPolicy);
+                  },
+              ),
+              const TextSpan(
+                text: "和",
+              ),
+              TextSpan(
+                text: "《用户使用协议》",
+                style: TextStyle(
+                  color: "#5E8BFF".toColor(),
+                  decoration: TextDecoration.none,
+                ),
+                recognizer: TapGestureRecognizer()
+                  ..onTap = () {
+                    BrowserPage.start(Constants.userAgreement);
+                  },
+              ),
+              const TextSpan(
+                text: "。同意后,我们将继续为您服务。",
+              ),
+            ],
+          ),
+        ),
+        cancelText: "不同意",
+        confirmText: "同意并继续",
+        cancelOnTap: () {
+          EAAlertDialog.dismiss();
+          exit(0);
+        },
+        confirmOnTap: () {
+          EAAlertDialog.dismiss();
+          KVUtil.putBool('isAgreePrivacyKey', true);
+          Get.offNamed(RoutePath.mainTab);
+        },
+      );
+    }
+  }
+}

+ 8 - 6
lib/module/splash/view.dart

@@ -1,24 +1,26 @@
 import 'dart:async';
+import 'dart:io';
 
 import 'package:electronic_assistant/base/base_page.dart';
 import 'package:electronic_assistant/dialog/alert_dialog.dart';
+import 'package:electronic_assistant/module/splash/controller.dart';
 import 'package:electronic_assistant/resource/assets.gen.dart';
+import 'package:electronic_assistant/utils/expand.dart';
+import 'package:electronic_assistant/utils/mmkv_util.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 
 import '../../router/app_pages.dart';
 
-class SplashPage extends BasePage {
-  const SplashPage({super.key});
+class SplashPage extends BasePage<SplashController> {
+  SplashPage({super.key});
 
-  final splashDelayedTime = 2;
+  @override
+  final SplashController controller = Get.put(SplashController());
 
   @override
   Widget buildBody(BuildContext context) {
-    Timer(Duration(seconds: splashDelayedTime), () {
-      Get.offNamed(RoutePath.mainTab);
-    });
     return _buildSplash();
   }
 

+ 3 - 1
lib/router/app_pages.dart

@@ -6,6 +6,7 @@ import 'package:electronic_assistant/module/files/search/controller.dart';
 import 'package:electronic_assistant/module/main/controller.dart';
 import 'package:electronic_assistant/module/main/drawer/controller.dart';
 import 'package:electronic_assistant/module/record/controller.dart';
+import 'package:electronic_assistant/module/splash/controller.dart';
 import 'package:electronic_assistant/module/store/controller.dart';
 import 'package:electronic_assistant/module/store/view.dart';
 import 'package:electronic_assistant/module/talk/controller.dart';
@@ -65,6 +66,7 @@ class AppBinding extends Bindings {
   @override
   void dependencies() {
     lazyPut(() => MainController());
+    lazyPut(() => SplashController());
     lazyPut(() => HomePageController());
     lazyPut(() => LoginController());
     lazyPut(() => TaskController());
@@ -88,7 +90,7 @@ class AppBinding extends Bindings {
 }
 
 final generalPages = [
-  GetPage(name: RoutePath.splash, page: () => const SplashPage()),
+  GetPage(name: RoutePath.splash, page: () => SplashPage()),
   GetPage(name: RoutePath.login, page: () => const LoginPage()),
   GetPage(name: RoutePath.mainTab, page: () => MainTabPage()),
   GetPage(name: RoutePath.files, page: () => const FilesPage()),