controller.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import 'dart:async';
  2. import 'dart:io';
  3. import 'package:electronic_assistant/base/base_controller.dart';
  4. import 'package:electronic_assistant/data/consts/constants.dart';
  5. import 'package:electronic_assistant/module/browser/view.dart';
  6. import 'package:electronic_assistant/router/app_pages.dart';
  7. import 'package:electronic_assistant/utils/desktop_shortcut_utils.dart';
  8. import 'package:electronic_assistant/utils/expand.dart';
  9. import 'package:electronic_assistant/widget/alert_dialog.dart';
  10. import 'package:flutter/cupertino.dart';
  11. import 'package:flutter/gestures.dart';
  12. import 'package:get/get.dart';
  13. import '../../main.dart';
  14. class SplashController extends BaseController {
  15. final splashDelayedTime = 2;
  16. @override
  17. void onReady() {
  18. super.onReady();
  19. final isAgreePrivacy = isAgreePrivacyPolicy();
  20. if (isAgreePrivacy) {
  21. isAgreePrivacyNextStep();
  22. } else {
  23. EAAlertDialog.show(
  24. title: "隐私政策及权限说明",
  25. contentWidget: RichText(
  26. textAlign: TextAlign.left,
  27. text: TextSpan(
  28. style: TextStyle(
  29. color: "#5F5F61".toColor(),
  30. fontSize: 14,
  31. decoration: TextDecoration.none,
  32. ),
  33. children: [
  34. const TextSpan(
  35. text:
  36. "为了更好地为您服务,我们可能向系统申请一些必要权限,用于基本服务和功能。我们非常重视您的隐私和个人信息,请使用之前请仔细阅读",
  37. ),
  38. TextSpan(
  39. text: "《隐私政策》",
  40. style: TextStyle(
  41. color: "#5E8BFF".toColor(),
  42. decoration: TextDecoration.none,
  43. ),
  44. recognizer: TapGestureRecognizer()
  45. ..onTap = () {
  46. if (GetPlatform.isIOS) {
  47. BrowserPage.start(Constants.privacyPolicyIos);
  48. } else {
  49. BrowserPage.start(Constants.privacyPolicy);
  50. }
  51. },
  52. ),
  53. const TextSpan(
  54. text: "和",
  55. ),
  56. TextSpan(
  57. text: "《用户使用协议》",
  58. style: TextStyle(
  59. color: "#5E8BFF".toColor(),
  60. decoration: TextDecoration.none,
  61. ),
  62. recognizer: TapGestureRecognizer()
  63. ..onTap = () {
  64. BrowserPage.start(Constants.userAgreement);
  65. },
  66. ),
  67. const TextSpan(
  68. text: "。同意后,我们将继续为您服务。",
  69. ),
  70. ],
  71. ),
  72. ),
  73. cancelText: "不同意",
  74. confirmText: "同意并继续",
  75. cancelOnTap: () {
  76. EAAlertDialog.dismiss();
  77. exit(0);
  78. },
  79. confirmOnTap: () async {
  80. EAAlertDialog.dismiss();
  81. setPrivacyPolicy(true);
  82. await initAfterGrant();
  83. await Future.delayed(const Duration(seconds: 1));
  84. Get.offNamed(RoutePath.mainTab);
  85. },
  86. );
  87. }
  88. }
  89. isAgreePrivacyNextStep() {
  90. //判断是否有额外操作执行
  91. if (DesktopShortcutUtils.getRouteMap() != null) {
  92. final routeMap = DesktopShortcutUtils.getRouteMap();
  93. if (routeMap?[LaunchAction.key] == LaunchAction.recordAudioAction) {
  94. _goMain(Duration.zero, arguments: routeMap);
  95. } else {
  96. _goMain(Duration(seconds: splashDelayedTime));
  97. }
  98. } else {
  99. _goMain(Duration(seconds: splashDelayedTime));
  100. }
  101. }
  102. void _goMain(Duration delayTime, {Map<String, dynamic>? arguments}) {
  103. Timer(delayTime, () {
  104. Get.offNamed(RoutePath.mainTab, arguments: arguments);
  105. });
  106. }
  107. }