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';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
16
17
18
19
20
|
import 'bloc.dart';
import 'event.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/route/route.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
21
22
|
class HomePage extends StatelessWidget {
const HomePage({super.key});
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
23
24
25
26
|
@override
Widget build(BuildContext context) {
return BlocProvider(
|
cde7505e
吴启风
feat:应用内升级
|
27
|
create: (BuildContext context) =>
|
f74aeedc
吴启风
feat:首页类名调整
|
28
|
HomeBloc()
|
cde7505e
吴启风
feat:应用内升级
|
29
|
..add(InitEvent()),
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
30
31
32
33
34
35
36
37
|
child: Builder(builder: (context) => _HomePageView()),
);
}
}
class _HomePageView extends StatelessWidget {
@override
Widget build(BuildContext context) {
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
38
39
|
return MultiBlocListener(listeners: [
BlocListener<UserBloc, UserState>(listener: (context, state) {
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
40
|
}),
|
f74aeedc
吴启风
feat:首页类名调整
|
41
|
BlocListener<HomeBloc, HomeState>(
|
cde7505e
吴启风
feat:应用内升级
|
42
|
listener: (context, state) {
|
cde7505e
吴启风
feat:应用内升级
|
43
|
if (state is UpdateDialogState) {
|
2c079546
吴启风
feat:应用内更新接口替换
|
44
|
_showUpdateDialog(context, state.forceUpdate, state.appVersionEntity);
|
cde7505e
吴启风
feat:应用内升级
|
45
46
|
}
},
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
47
48
|
),
], child: _homeView());
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
49
50
|
}
|
cde7505e
吴启风
feat:应用内升级
|
51
|
Widget _homeView() =>
|
f74aeedc
吴启风
feat:首页类名调整
|
52
|
BlocBuilder<HomeBloc, HomeState>(
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
53
|
builder: (context, state) {
|
cde7505e
吴启风
feat:应用内升级
|
54
55
56
57
58
59
60
61
62
63
64
65
|
return Scaffold(
body: Container(
color: Colors.white,
child: Column(
children: [
const BaseHomeHeaderWidget(),
Expanded(
child: Center(
child: Row(
children: [
Expanded(
child: GestureDetector(
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
66
|
onTap: () {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
67
|
_checkPermission(() {
|
2187c85f
吴启风
feat:课程结构调整
|
68
|
pushNamed(AppRouteName.courseUnit);
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
69
|
});
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
70
71
72
73
74
75
76
77
78
|
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(
alignment: AlignmentDirectional.center,
children: [
Image.asset(
'bg_frame_module'.assetPng,
|
cde7505e
吴启风
feat:应用内升级
|
79
80
81
82
83
84
85
|
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:支付成功刷新用户数据
|
86
87
|
]),
10.verticalSpace,
|
cde7505e
吴启风
feat:应用内升级
|
88
|
Image.asset('label_module_study'.assetPng,
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
89
90
|
width: 124.w, height: 34.h),
],
|
cde7505e
吴启风
feat:应用内升级
|
91
92
93
94
95
96
|
),
),
),
Expanded(
child: BlocBuilder<UserBloc, UserState>(
builder: (context, userState) {
|
cde7505e
吴启风
feat:应用内升级
|
97
98
|
return GestureDetector(
onTap: () {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
99
100
101
|
_checkPermission(() {
pushNamed(AppRouteName.games);
});
|
cde7505e
吴启风
feat:应用内升级
|
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
|
},
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:增加过渡页&集成串联游戏
|
131
|
),
|
cde7505e
吴启风
feat:应用内升级
|
132
133
134
135
136
137
138
139
140
|
),
)
],
),
),
);
});
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
_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:应用内升级
|
165
166
167
|
///Flutter侧处理升级对话框
///[forcedUpgrade] 是否强制升级
_showUpdateDialog(BuildContext context, bool forcedUpgrade,
|
2c079546
吴启风
feat:应用内更新接口替换
|
168
|
AppVersionEntity appVersionEntity) {
|
cde7505e
吴启风
feat:应用内升级
|
169
170
171
172
173
174
175
176
177
178
|
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:应用内更新接口替换
|
179
|
appVersionEntity.remark ??
|
cde7505e
吴启风
feat:应用内升级
|
180
181
182
183
184
185
186
|
'修复了一些已知问题'),
actions: <Widget>[
TextButton(
child: Text(forcedUpgrade ? '退出' : '取消'),
onPressed: () =>
{
if (forcedUpgrade) {
|
258578de
吴启风
feat:修复ios上退出应用失效问题
|
187
|
AppConfigHelper.exitApp()
|
cde7505e
吴启风
feat:应用内升级
|
188
189
190
191
192
193
194
195
196
|
} else
{
Navigator.of(context).pop()
}
},
),
TextButton(
child: const Text('升级'),
onPressed: () async {
|
911794fd
吴启风
feat:审核控制增加ios平台条件判断
|
197
|
if (AppConfigHelper.isIosPlatform()) {
|
cde7505e
吴启风
feat:应用内升级
|
198
199
200
|
_launchAppStore("6450870731");
return;
}
|
2c079546
吴启风
feat:应用内更新接口替换
|
201
|
final String? apkUrl = appVersionEntity.packageUrl;
|
cde7505e
吴启风
feat:应用内升级
|
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
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:增加过渡页&集成串联游戏
|
219
220
|
),
);
|
cde7505e
吴启风
feat:应用内升级
|
221
222
223
224
225
226
227
228
229
230
231
232
|
},
);
}
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:增加过渡页&集成串联游戏
|
233
|
}
|