Blame view

lib/app/splash_page.dart 3.56 KB
062f0df2   liangchengyou   feat:登录模块代码提交
1
  import 'dart:async';
cc3b183a   liangchengyou   feat:ios启动图/logo
2
  import 'dart:io';
a4d8eaa2   Key   feat: 登录时账户有效性校验
3
  import 'dart:math';
062f0df2   liangchengyou   feat:登录模块代码提交
4
  
1892df31   Key   优化接口调用
5
  import 'package:flutter/foundation.dart';
2a29701f   liangchengyou   feat:提交代码
6
  import 'package:flutter/material.dart';
a4d8eaa2   Key   feat: 登录时账户有效性校验
7
8
  import 'package:flutter/services.dart';
  import 'package:limiting_direction_csx/limiting_direction_csx.dart';
94342c3f   Key   feat: user util
9
  import 'package:wow_english/common/core/user_util.dart';
062f0df2   liangchengyou   feat:登录模块代码提交
10
  import 'package:wow_english/common/extension/string_extension.dart';
a4d8eaa2   Key   feat: 登录时账户有效性校验
11
  import 'package:wow_english/common/request/config.dart';
e55bbdf3   Key   fixed: aliyun oss...
12
  import 'package:wow_english/common/request/dao/user_dao.dart';
94342c3f   Key   feat: user util
13
  import 'package:wow_english/models/user_entity.dart';
2a29701f   liangchengyou   feat:提交代码
14
  import 'package:wow_english/route/route.dart';
a4d8eaa2   Key   feat: 登录时账户有效性校验
15
  import 'package:wow_english/utils/log_util.dart';
94342c3f   Key   feat: user util
16
  import 'package:wow_english/utils/sp_util.dart';
062f0df2   liangchengyou   feat:登录模块代码提交
17
  
a117a5a3   liangchengyou   feat:更新代码
18
19
  class SplashPage extends StatelessWidget {
    const SplashPage({super.key});
2a29701f   liangchengyou   feat:提交代码
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  
    @override
    Widget build(BuildContext context) {
      return const TransitionView();
    }
  }
  
  class TransitionView extends StatefulWidget {
    const TransitionView({super.key});
  
    @override
    State<StatefulWidget> createState() {
      return _TransitionViewState();
    }
  }
  
  class _TransitionViewState extends State<TransitionView> {
062f0df2   liangchengyou   feat:登录模块代码提交
37
    Future startTime() async {
94342c3f   Key   feat: user util
38
39
      // 判断是否登录
      UserEntity? userEntity = UserUtil.getUser();
a4d8eaa2   Key   feat: 登录时账户有效性校验
40
41
      Log.d('当前模式:kDebugMode=$kDebugMode, kProfileMode=$kProfileMode, kReleaseMode=$kReleaseMode');
      Log.d('当前API地址:${RequestConfig.baseUrl}');
e55bbdf3   Key   fixed: aliyun oss...
42
43
44
45
      //BuildContext context = Navigator.of(context).context;
      //var currentPageName = ModalRoute.of(Navigator.of(AppRouter.context))?.settings.name;
      //Log.d('Splash读当前页面:$currentPageName');
      Log.d('Splash读本地, userEntity: $userEntity');
a4d8eaa2   Key   feat: 登录时账户有效性校验
46
47
48
      int apartInMilliseconds = 0;
      // 调一下接口判断一下有效性再往下
      if (userEntity != null) {
e55bbdf3   Key   fixed: aliyun oss...
49
        String token = userEntity.token;
a4d8eaa2   Key   feat: 登录时账户有效性校验
50
        DateTime startTime = DateTime.now();
e55bbdf3   Key   fixed: aliyun oss...
51
52
53
54
55
56
57
58
59
60
61
        try {
          userEntity = await UserDao.getUserInfo();
          Log.d('Splash在线更新, userEntity: $userEntity');
          if (userEntity != null) {
            userEntity.token = token;
            Log.d('Splash重设token, userEntity: $userEntity');
            UserUtil.saveUser(userEntity);
          }
        } catch (e) {
          e.logE();
        }
a4d8eaa2   Key   feat: 登录时账户有效性校验
62
        apartInMilliseconds = DateTime.now().difference(startTime).inMilliseconds;
1892df31   Key   优化接口调用
63
      }
a4d8eaa2   Key   feat: 登录时账户有效性校验
64
      int duration = max(2000 - apartInMilliseconds, 0);
e55bbdf3   Key   fixed: aliyun oss...
65
      Log.d('Splash getUserInfo 耗时:${apartInMilliseconds}ms, 最终duration=$duration');
a4d8eaa2   Key   feat: 登录时账户有效性校验
66
      Timer(Duration(milliseconds: duration), () {
210d15e0   Key   fixed: 账户注销接口
67
        /*if (userEntity != null) {
08a0f5a8   liangchengyou   feat:路由方式更新
68
          pushNamedAndRemoveUntil(AppRouteName.home, (route) => false);
062f0df2   liangchengyou   feat:登录模块代码提交
69
        } else {
08a0f5a8   liangchengyou   feat:路由方式更新
70
          pushNamedAndRemoveUntil(AppRouteName.login, (route) => false);
210d15e0   Key   fixed: 账户注销接口
71
72
        }*/
        pushNamedAndRemoveUntil(AppRouteName.home, (route) => false);
062f0df2   liangchengyou   feat:登录模块代码提交
73
74
75
76
77
78
      });
    }
  
    @override
    void initState() {
      super.initState();
089ccd5c   Key   fixed: user util ...
79
80
81
82
83
      init();
    }
  
    void init() async {
      await SpUtil.preInit();
062f0df2   liangchengyou   feat:登录模块代码提交
84
      startTime();
cc3b183a   liangchengyou   feat:ios启动图/logo
85
86
87
88
89
90
91
92
93
      changeDevice();
    }
  
    void changeDevice() async {
      ///设置设备默认方向
      WidgetsFlutterBinding.ensureInitialized();
      if (Platform.isIOS) {
        await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape);
      } else {
a4d8eaa2   Key   feat: 登录时账户有效性校验
94
        await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
cc3b183a   liangchengyou   feat:ios启动图/logo
95
      }
062f0df2   liangchengyou   feat:登录模块代码提交
96
97
    }
  
2a29701f   liangchengyou   feat:提交代码
98
99
100
    @override
    Widget build(BuildContext context) {
      return Scaffold(
2a29701f   liangchengyou   feat:提交代码
101
        body: Center(
062f0df2   liangchengyou   feat:登录模块代码提交
102
103
104
105
          child: Container(
            decoration: BoxDecoration(
                image: DecorationImage(
                    image: AssetImage(
1d5315dd   liangchengyou   feat:添加字体,调整文件结构
106
                      'splash'.assetGif,
062f0df2   liangchengyou   feat:登录模块代码提交
107
                    ),
94342c3f   Key   feat: user util
108
                    fit: BoxFit.fill)),
2a29701f   liangchengyou   feat:提交代码
109
110
111
112
          ),
        ),
      );
    }
056970d8   Key   feat: api
113
  }