6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
1
|
import 'package:flutter/material.dart';
|
cde7505e
吴启风
feat:应用内升级
|
2
3
|
import 'package:flutter_app_update/azhon_app_update.dart';
import 'package:flutter_app_update/update_model.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
4
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
cde7505e
吴启风
feat:应用内升级
|
5
|
import 'package:url_launcher/url_launcher.dart';
|
28f20da9
吴启风
feat:针对apple审核对支付...
|
6
|
import 'package:wow_english/common/core/app_config_helper.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
7
|
import 'package:wow_english/common/extension/string_extension.dart';
|
2c079546
吴启风
feat:应用内更新接口替换
|
8
|
import 'package:wow_english/models/app_version_entity.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
9
10
|
import 'package:wow_english/pages/home/state.dart';
import 'package:wow_english/pages/home/widgets/BaseHomeHeaderWidget.dart';
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
11
|
import 'package:wow_english/pages/shop/exchane/bloc/exchange_lesson_bloc.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(
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
27
28
29
|
create: (BuildContext context) => HomeBloc()
..add(InitEvent())
..add(ExchangeSuccessEvent()),
|
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
|
return MultiBlocListener(listeners: [
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
39
|
BlocListener<UserBloc, UserState>(listener: (context, state) {}),
|
f74aeedc
吴启风
feat:首页类名调整
|
40
|
BlocListener<HomeBloc, HomeState>(
|
cde7505e
吴启风
feat:应用内升级
|
41
|
listener: (context, state) {
|
cde7505e
吴启风
feat:应用内升级
|
42
|
if (state is UpdateDialogState) {
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
43
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() =>
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
BlocBuilder<HomeBloc, HomeState>(builder: (context, state) {
final bloc = BlocProvider.of<HomeBloc>(context);
return Scaffold(
body: Container(
color: Colors.white,
child: Column(
children: [
BaseHomeHeaderWidget(
callBack: (value) => {
bloc.exchangeResult = value['exchange'],
bloc.add(ExchangeSuccessEvent())
}),
Expanded(
child: Center(
child: Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
_checkPermission(() {
pushNamed(AppRouteName.courseUnit)
.then((value) => {
if (value != null)
{
bloc.exchangeResult =
value['exchange'],
bloc.add(ExchangeSuccessEvent())
}
});
}, bloc);
},
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),
Center(
child: Image.asset(
'pic_module_study'.assetPng,
width: 140.5.w,
height: 172.h),
)
]),
10.verticalSpace,
Image.asset('label_module_study'.assetPng,
width: 124.w, height: 34.h),
],
),
),
),
Expanded(
child: BlocBuilder<UserBloc, UserState>(
builder: (context, userState) {
return GestureDetector(
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
109
|
onTap: () {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
110
|
_checkPermission(() {
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
111
112
|
pushNamed(AppRouteName.games);
}, bloc);
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
113
114
115
116
117
118
119
120
121
|
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(
alignment: AlignmentDirectional.center,
children: [
Image.asset(
'bg_frame_module'.assetPng,
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
122
123
124
125
126
127
|
width: 162.5.w,
height: 203.5.h),
Image.asset(
'pic_module_game'.assetPng,
width: 140.5.w,
height: 172.h)
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
128
129
|
]),
10.verticalSpace,
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
130
|
Image.asset('label_module_game'.assetPng,
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
131
132
|
width: 124.w, height: 34.h),
],
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
133
134
|
));
}),
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
135
|
),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
136
137
138
139
140
141
142
143
144
|
],
),
),
)
],
),
),
);
});
|
cde7505e
吴启风
feat:应用内升级
|
145
|
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
146
|
_checkPermission(VoidCallback onAllowed, HomeBloc bloc) {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
147
148
149
150
151
152
153
|
if (UserUtil.isLogined()) {
if (AppConfigHelper.shouldHidePay()) {
onAllowed();
} else {
if (UserUtil.hasPermission()) {
onAllowed();
} else {
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
154
155
156
157
158
159
160
161
162
163
164
165
|
showTwoActionDialog('提示', '忽略', '去续费', '您的课程已到期,请快快续费继续学习吧!',
leftTap: () {
popPage();
}, rightTap: () {
popPage();
pushNamed(AppRouteName.shop).then((value) {
if (value != null) {
bloc.exchangeResult = value['exchange'];
bloc.add(ExchangeSuccessEvent());
}
});
});
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
166
167
168
169
170
171
172
173
|
}
}
} else {
//如果没登录先登录
pushNamed(AppRouteName.login);
}
}
|
cde7505e
吴启风
feat:应用内升级
|
174
175
176
|
///Flutter侧处理升级对话框
///[forcedUpgrade] 是否强制升级
_showUpdateDialog(BuildContext context, bool forcedUpgrade,
|
2c079546
吴启风
feat:应用内更新接口替换
|
177
|
AppVersionEntity appVersionEntity) {
|
cde7505e
吴启风
feat:应用内升级
|
178
179
180
181
182
183
184
185
186
|
showDialog(
context: context,
// 当我们点击除开对话框内容以外的区域是否关闭对话需用用到barrierDismissible参数 . 这个参数默认值是true ,但不能为null .
barrierDismissible: !forcedUpgrade,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(!forcedUpgrade),
child: AlertDialog(
title: const Text('发现新版本'),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
187
|
content: Text(appVersionEntity.remark ?? '修复了一些已知问题'),
|
cde7505e
吴启风
feat:应用内升级
|
188
189
190
|
actions: <Widget>[
TextButton(
child: Text(forcedUpgrade ? '退出' : '取消'),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
191
192
193
194
195
|
onPressed: () => {
if (forcedUpgrade)
{AppConfigHelper.exitApp()}
else
{Navigator.of(context).pop()}
|
cde7505e
吴启风
feat:应用内升级
|
196
197
198
199
200
|
},
),
TextButton(
child: const Text('升级'),
onPressed: () async {
|
911794fd
吴启风
feat:审核控制增加ios平台条件判断
|
201
|
if (AppConfigHelper.isIosPlatform()) {
|
cde7505e
吴启风
feat:应用内升级
|
202
203
204
|
_launchAppStore("6450870731");
return;
}
|
2c079546
吴启风
feat:应用内更新接口替换
|
205
|
final String? apkUrl = appVersionEntity.packageUrl;
|
cde7505e
吴启风
feat:应用内升级
|
206
207
208
209
210
211
212
213
214
|
if (apkUrl == null || apkUrl.isEmpty) {
return;
}
UpdateModel model = UpdateModel(
apkUrl,
"wowenglish.apk",
"ic_launcher",
'',
);
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
215
216
|
AzhonAppUpdate.update(model)
.then((value) => debugPrint('$value'));
|
cde7505e
吴启风
feat:应用内升级
|
217
218
219
220
221
222
|
if (!forcedUpgrade) {
Navigator.of(context).pop();
}
},
),
],
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
223
224
|
),
);
|
cde7505e
吴启风
feat:应用内升级
|
225
226
227
228
229
230
231
232
233
234
235
236
|
},
);
}
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:增加过渡页&集成串联游戏
|
237
|
}
|