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';
|
28f20da9
吴启风
feat:针对apple审核对支付...
|
9
|
import 'package:wow_english/common/core/app_config_helper.dart';
|
94342c3f
Key
feat: user util
|
10
|
import 'package:wow_english/common/core/user_util.dart';
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
11
|
import 'package:wow_english/common/extension/string_extension.dart';
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
12
|
import 'package:wow_english/common/request/config.dart';
|
e55bbdf3
Key
fixed: aliyun oss...
|
13
|
import 'package:wow_english/common/request/dao/user_dao.dart';
|
94342c3f
Key
feat: user util
|
14
|
import 'package:wow_english/models/user_entity.dart';
|
2a29701f
liangchengyou
feat:提交代码
|
15
|
import 'package:wow_english/route/route.dart';
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
16
|
import 'package:wow_english/utils/log_util.dart';
|
94342c3f
Key
feat: user util
|
17
|
import 'package:wow_english/utils/sp_util.dart';
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
18
|
|
2a9895f6
吴启风
feat:首次启动隐私协议弹窗
|
19
20
21
|
import '../common/core/app_consts.dart';
import '../common/widgets/webview_dialog.dart';
|
a117a5a3
liangchengyou
feat:更新代码
|
22
23
|
class SplashPage extends StatelessWidget {
const SplashPage({super.key});
|
2a29701f
liangchengyou
feat:提交代码
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
@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:登录模块代码提交
|
41
|
Future startTime() async {
|
94342c3f
Key
feat: user util
|
42
43
|
// 判断是否登录
UserEntity? userEntity = UserUtil.getUser();
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
44
45
|
Log.d('当前模式:kDebugMode=$kDebugMode, kProfileMode=$kProfileMode, kReleaseMode=$kReleaseMode');
Log.d('当前API地址:${RequestConfig.baseUrl}');
|
e55bbdf3
Key
fixed: aliyun oss...
|
46
47
48
49
|
//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: 登录时账户有效性校验
|
50
|
int apartInMilliseconds = 0;
|
28f20da9
吴启风
feat:针对apple审核对支付...
|
51
|
// 阻塞获取系统配置信息
|
c4458dc6
吴启风
feat:启动页必要接口增加失败重试
|
52
|
AppConfigHelper.getAppConfig();
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
53
|
// 调一下接口判断一下有效性再往下
|
278208b8
吴启风
feat:1、用户访问权限调整;2...
|
54
55
|
if (userEntity != null && userEntity.token != null) {
String token = userEntity.token!;
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
56
|
DateTime startTime = DateTime.now();
|
c4458dc6
吴启风
feat:启动页必要接口增加失败重试
|
57
|
await fetchNecessaryData(token);
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
58
|
apartInMilliseconds = DateTime.now().difference(startTime).inMilliseconds;
|
1892df31
Key
优化接口调用
|
59
|
}
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
60
|
int duration = max(2000 - apartInMilliseconds, 0);
|
e55bbdf3
Key
fixed: aliyun oss...
|
61
|
Log.d('Splash getUserInfo 耗时:${apartInMilliseconds}ms, 最终duration=$duration');
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
62
|
Timer(Duration(milliseconds: duration), () {
|
210d15e0
Key
fixed: 账户注销接口
|
63
|
/*if (userEntity != null) {
|
08a0f5a8
liangchengyou
feat:路由方式更新
|
64
|
pushNamedAndRemoveUntil(AppRouteName.home, (route) => false);
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
65
|
} else {
|
08a0f5a8
liangchengyou
feat:路由方式更新
|
66
|
pushNamedAndRemoveUntil(AppRouteName.login, (route) => false);
|
210d15e0
Key
fixed: 账户注销接口
|
67
|
}*/
|
2a9895f6
吴启风
feat:首次启动隐私协议弹窗
|
68
69
|
bool isAggreementAccepted = AppConfigHelper.getAgreementAccepted();
if (isAggreementAccepted) {
|
2187c85f
吴启风
feat:课程结构调整
|
70
|
pushNamedAndRemoveUntil(AppRouteName.home, (route) => false);
|
2a9895f6
吴启风
feat:首次启动隐私协议弹窗
|
71
72
73
74
75
76
77
78
79
80
81
82
83
|
} else {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(false),
child: WebviewDialog(
title: "服务条款及隐私政策",
webUrl: AppConsts.userPrivacyPolicyUrl,
leftTap: () {
AppConfigHelper.saveAgreementAccepted(true);
pushNamedAndRemoveUntil(
|
2187c85f
吴启风
feat:课程结构调整
|
84
|
AppRouteName.home, (route) => false);
|
2a9895f6
吴启风
feat:首次启动隐私协议弹窗
|
85
86
87
|
},
rightTap: () {
// 退出应用
|
258578de
吴启风
feat:修复ios上退出应用失效问题
|
88
|
AppConfigHelper.exitApp();
|
2a9895f6
吴启风
feat:首次启动隐私协议弹窗
|
89
90
91
92
93
94
|
},
),
);
},
);
}
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
95
96
97
|
});
}
|
c4458dc6
吴启风
feat:启动页必要接口增加失败重试
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
Future<void> fetchNecessaryData(String userToken) async {
// 获取用户信息
try {
UserEntity? userEntity = await UserDao.getUserInfo();
Log.d('Splash在线更新, userEntity: $userEntity');
if (userEntity != null) {
userEntity.token = userToken;
Log.d('Splash重设token, userEntity: $userEntity');
UserUtil.saveUser(userEntity);
}
} catch (e) {
//异常的话弹窗提示重试
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(false),
child: AlertDialog(
title: const Text('温馨提示'),
content: const Text('网络异常,请检查网络后重试'),
actions: <Widget>[
TextButton(
child: const Text('退出'),
onPressed: () => AppConfigHelper.exitApp()
),
TextButton(
child: const Text('重试'),
onPressed: () async {
fetchNecessaryData(userToken);
},
),
],
),
);
},
);
e.logE();
}
}
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
139
140
141
|
@override
void initState() {
super.initState();
|
089ccd5c
Key
fixed: user util ...
|
142
143
144
145
146
|
init();
}
void init() async {
await SpUtil.preInit();
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
147
|
startTime();
|
cc3b183a
liangchengyou
feat:ios启动图/logo
|
148
149
150
151
152
153
154
155
156
|
changeDevice();
}
void changeDevice() async {
///设置设备默认方向
WidgetsFlutterBinding.ensureInitialized();
if (Platform.isIOS) {
await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape);
} else {
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
157
|
await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
|
cc3b183a
liangchengyou
feat:ios启动图/logo
|
158
|
}
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
159
160
|
}
|
2a29701f
liangchengyou
feat:提交代码
|
161
162
163
|
@override
Widget build(BuildContext context) {
return Scaffold(
|
2a29701f
liangchengyou
feat:提交代码
|
164
|
body: Center(
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
165
166
167
168
|
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(
|
1d5315dd
liangchengyou
feat:添加字体,调整文件结构
|
169
|
'splash'.assetGif,
|
062f0df2
liangchengyou
feat:登录模块代码提交
|
170
|
),
|
94342c3f
Key
feat: user util
|
171
|
fit: BoxFit.fill)),
|
2a29701f
liangchengyou
feat:提交代码
|
172
173
174
175
|
),
),
);
}
|
056970d8
Key
feat: api
|
176
|
}
|