controller.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. BrowserPage.start(Constants.privacyPolicy);
  47. },
  48. ),
  49. const TextSpan(
  50. text: "和",
  51. ),
  52. TextSpan(
  53. text: "《用户使用协议》",
  54. style: TextStyle(
  55. color: "#5E8BFF".toColor(),
  56. decoration: TextDecoration.none,
  57. ),
  58. recognizer: TapGestureRecognizer()
  59. ..onTap = () {
  60. BrowserPage.start(Constants.userAgreement);
  61. },
  62. ),
  63. const TextSpan(
  64. text: "。同意后,我们将继续为您服务。",
  65. ),
  66. ],
  67. ),
  68. ),
  69. cancelText: "不同意",
  70. confirmText: "同意并继续",
  71. cancelOnTap: () {
  72. EAAlertDialog.dismiss();
  73. exit(0);
  74. },
  75. confirmOnTap: () async {
  76. EAAlertDialog.dismiss();
  77. setPrivacyPolicy(true);
  78. await initAfterGrant();
  79. await Future.delayed(const Duration(seconds: 1));
  80. Get.offNamed(RoutePath.mainTab);
  81. },
  82. );
  83. }
  84. }
  85. isAgreePrivacyNextStep() {
  86. //判断是否有额外操作执行
  87. if (DesktopShortcutUtils.getRouteMap() != null) {
  88. final routeMap = DesktopShortcutUtils.getRouteMap();
  89. if (routeMap?[LaunchAction.key] == LaunchAction.recordAudioAction) {
  90. _goMain(Duration.zero, arguments: routeMap);
  91. } else {
  92. _goMain(Duration(seconds: splashDelayedTime));
  93. }
  94. } else {
  95. _goMain(Duration(seconds: splashDelayedTime));
  96. }
  97. }
  98. void _goMain(Duration delayTime, {Map<String, dynamic>? arguments}) {
  99. Timer(delayTime, () {
  100. Get.offNamed(RoutePath.mainTab, arguments: arguments);
  101. });
  102. }
  103. }