cde7505e
吴启风
feat:应用内升级
|
1
|
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
2
|
import 'package:flutter/material.dart';
|
cde7505e
吴启风
feat:应用内升级
|
3
4
|
import 'package:flutter_app_update/azhon_app_update.dart';
import 'package:flutter_app_update/update_model.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
5
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
cde7505e
吴启风
feat:应用内升级
|
6
|
import 'package:url_launcher/url_launcher.dart';
|
28f20da9
吴启风
feat:针对apple审核对支付...
|
7
|
import 'package:wow_english/common/core/app_config_helper.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
8
|
import 'package:wow_english/common/extension/string_extension.dart';
|
2c079546
吴启风
feat:应用内更新接口替换
|
9
|
import 'package:wow_english/models/app_version_entity.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
10
11
|
import 'package:wow_english/pages/home/state.dart';
import 'package:wow_english/pages/home/widgets/BaseHomeHeaderWidget.dart';
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
12
|
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
13
|
|
278208b8
吴启风
feat:1、用户访问权限调整;2...
|
14
15
|
import '../../common/core/user_util.dart';
import '../../common/dialogs/show_dialog.dart';
|
2c079546
吴启风
feat:应用内更新接口替换
|
16
|
import '../../utils/log_util.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
17
18
19
20
21
|
import 'bloc.dart';
import 'event.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/route/route.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
22
23
|
class HomePage extends StatelessWidget {
const HomePage({super.key});
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
24
25
26
27
|
@override
Widget build(BuildContext context) {
return BlocProvider(
|
cde7505e
吴启风
feat:应用内升级
|
28
|
create: (BuildContext context) =>
|
f74aeedc
吴启风
feat:首页类名调整
|
29
|
HomeBloc()
|
cde7505e
吴启风
feat:应用内升级
|
30
|
..add(InitEvent()),
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
31
32
33
34
35
36
37
38
|
child: Builder(builder: (context) => _HomePageView()),
);
}
}
class _HomePageView extends StatelessWidget {
@override
Widget build(BuildContext context) {
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
39
40
41
42
|
return MultiBlocListener(listeners: [
BlocListener<UserBloc, UserState>(listener: (context, state) {
debugPrint('WQF ModuleSelectPage BlocListener state: $state');
}),
|
f74aeedc
吴启风
feat:首页类名调整
|
43
|
BlocListener<HomeBloc, HomeState>(
|
cde7505e
吴启风
feat:应用内升级
|
44
|
listener: (context, state) {
|
911794fd
吴启风
feat:审核控制增加ios平台条件判断
|
45
|
Log.d("WQF HomePage listener state: $state");
|
cde7505e
吴启风
feat:应用内升级
|
46
|
if (state is UpdateDialogState) {
|
2c079546
吴启风
feat:应用内更新接口替换
|
47
|
_showUpdateDialog(context, state.forceUpdate, state.appVersionEntity);
|
cde7505e
吴启风
feat:应用内升级
|
48
49
|
}
},
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
50
51
|
),
], child: _homeView());
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
52
53
|
}
|
cde7505e
吴启风
feat:应用内升级
|
54
|
Widget _homeView() =>
|
f74aeedc
吴启风
feat:首页类名调整
|
55
|
BlocBuilder<HomeBloc, HomeState>(
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
56
|
builder: (context, state) {
|
cde7505e
吴启风
feat:应用内升级
|
57
58
59
60
61
62
63
64
65
66
67
68
|
return Scaffold(
body: Container(
color: Colors.white,
child: Column(
children: [
const BaseHomeHeaderWidget(),
Expanded(
child: Center(
child: Row(
children: [
Expanded(
child: GestureDetector(
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
69
|
onTap: () {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
70
|
_checkPermission(() {
|
2187c85f
吴启风
feat:课程结构调整
|
71
|
pushNamed(AppRouteName.courseUnit);
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
72
|
});
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
73
74
75
76
77
78
79
80
81
|
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(
alignment: AlignmentDirectional.center,
children: [
Image.asset(
'bg_frame_module'.assetPng,
|
cde7505e
吴启风
feat:应用内升级
|
82
83
84
85
86
87
88
|
width: 162.5.w, height: 203.5.h),
Center(
child: Image.asset(
'pic_module_study'.assetPng,
width: 140.5.w,
height: 172.h),
)
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
89
90
|
]),
10.verticalSpace,
|
cde7505e
吴启风
feat:应用内升级
|
91
|
Image.asset('label_module_study'.assetPng,
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
92
93
|
width: 124.w, height: 34.h),
],
|
cde7505e
吴启风
feat:应用内升级
|
94
95
96
97
98
99
100
101
102
103
|
),
),
),
Expanded(
child: BlocBuilder<UserBloc, UserState>(
builder: (context, userState) {
debugPrint(
'WQF ModuleSelectPage BlocBuilder state: $userState');
return GestureDetector(
onTap: () {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
104
105
106
|
_checkPermission(() {
pushNamed(AppRouteName.games);
});
|
cde7505e
吴启风
feat:应用内升级
|
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
|
},
child: Column(
mainAxisAlignment: MainAxisAlignment
.center,
children: [
Stack(
alignment: AlignmentDirectional
.center,
children: [
Image.asset(
'bg_frame_module'
.assetPng,
width: 162.5.w,
height: 203.5.h),
Image.asset(
'pic_module_game'
.assetPng,
width: 140.5.w,
height: 172.h)
]),
10.verticalSpace,
Image.asset(
'label_module_game'.assetPng,
width: 124.w, height: 34.h),
],
));
}),
),
],
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
136
|
),
|
cde7505e
吴启风
feat:应用内升级
|
137
138
139
140
141
142
143
144
145
|
),
)
],
),
),
);
});
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
_checkPermission(VoidCallback onAllowed) {
if (UserUtil.isLogined()) {
if (AppConfigHelper.shouldHidePay()) {
onAllowed();
} else {
if (UserUtil.hasPermission()) {
onAllowed();
} else {
showTwoActionDialog('提示', '忽略', '去续费',
'您的课程已到期,请快快续费继续学习吧!', leftTap: () {
popPage();
}, rightTap: () {
popPage();
pushNamed(AppRouteName.shop);
});
}
}
} else {
//如果没登录先登录
pushNamed(AppRouteName.login);
}
}
|
cde7505e
吴启风
feat:应用内升级
|
170
171
172
|
///Flutter侧处理升级对话框
///[forcedUpgrade] 是否强制升级
_showUpdateDialog(BuildContext context, bool forcedUpgrade,
|
2c079546
吴启风
feat:应用内更新接口替换
|
173
|
AppVersionEntity appVersionEntity) {
|
cde7505e
吴启风
feat:应用内升级
|
174
175
176
177
178
179
180
181
182
183
|
showDialog(
context: context,
// 当我们点击除开对话框内容以外的区域是否关闭对话需用用到barrierDismissible参数 . 这个参数默认值是true ,但不能为null .
barrierDismissible: !forcedUpgrade,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(!forcedUpgrade),
child: AlertDialog(
title: const Text('发现新版本'),
content: Text(
|
2c079546
吴启风
feat:应用内更新接口替换
|
184
|
appVersionEntity.remark ??
|
cde7505e
吴启风
feat:应用内升级
|
185
186
187
188
189
190
191
|
'修复了一些已知问题'),
actions: <Widget>[
TextButton(
child: Text(forcedUpgrade ? '退出' : '取消'),
onPressed: () =>
{
if (forcedUpgrade) {
|
258578de
吴启风
feat:修复ios上退出应用失效问题
|
192
|
AppConfigHelper.exitApp()
|
cde7505e
吴启风
feat:应用内升级
|
193
194
195
196
197
198
199
200
201
|
} else
{
Navigator.of(context).pop()
}
},
),
TextButton(
child: const Text('升级'),
onPressed: () async {
|
911794fd
吴启风
feat:审核控制增加ios平台条件判断
|
202
|
if (AppConfigHelper.isIosPlatform()) {
|
cde7505e
吴启风
feat:应用内升级
|
203
204
205
|
_launchAppStore("6450870731");
return;
}
|
2c079546
吴启风
feat:应用内更新接口替换
|
206
|
final String? apkUrl = appVersionEntity.packageUrl;
|
cde7505e
吴启风
feat:应用内升级
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
if (apkUrl == null || apkUrl.isEmpty) {
return;
}
UpdateModel model = UpdateModel(
apkUrl,
"wowenglish.apk",
"ic_launcher",
'',
);
AzhonAppUpdate.update(model).then((value) =>
debugPrint('$value'));
if (!forcedUpgrade) {
Navigator.of(context).pop();
}
},
),
],
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
224
225
|
),
);
|
cde7505e
吴启风
feat:应用内升级
|
226
227
228
229
230
231
232
233
234
235
236
237
|
},
);
}
void _launchAppStore(String appId) async {
final String url = 'https://apps.apple.com/cn/app/wow-english/id$appId';
if (await canLaunchUrl(Uri.parse(url))) {
await launchUrl(Uri.parse(url));
} else {
throw 'Could not launch $url';
}
}
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
238
|
}
|