4b858f67
吴启风
feat:webview库替换
|
1
2
|
import 'dart:io';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
3
|
import 'package:flutter/material.dart';
|
4b858f67
吴启风
feat:webview库替换
|
4
|
import 'package:flutter/services.dart';
|
cde7505e
吴启风
feat:应用内升级
|
5
6
|
import 'package:flutter_app_update/azhon_app_update.dart';
import 'package:flutter_app_update/update_model.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
7
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
4b858f67
吴启风
feat:webview库替换
|
8
|
import 'package:limiting_direction_csx/limiting_direction_csx.dart';
|
cde7505e
吴启风
feat:应用内升级
|
9
|
import 'package:url_launcher/url_launcher.dart';
|
28f20da9
吴启风
feat:针对apple审核对支付...
|
10
|
import 'package:wow_english/common/core/app_config_helper.dart';
|
a04e399e
biao
小鹅购买
|
11
|
import 'package:wow_english/common/core/app_consts.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
12
|
import 'package:wow_english/common/extension/string_extension.dart';
|
2c079546
吴启风
feat:应用内更新接口替换
|
13
|
import 'package:wow_english/models/app_version_entity.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
14
15
|
import 'package:wow_english/pages/home/state.dart';
import 'package:wow_english/pages/home/widgets/BaseHomeHeaderWidget.dart';
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
16
|
import 'package:wow_english/pages/home/widgets/ShakeImage.dart';
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
17
|
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
|
025d8543
biao
首页gametime播放修改
|
18
|
import 'package:wow_english/utils/audio_player_util.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
19
|
|
278208b8
吴启风
feat:1、用户访问权限调整;2...
|
20
21
|
import '../../common/core/user_util.dart';
import '../../common/dialogs/show_dialog.dart';
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
22
23
24
25
26
|
import 'bloc.dart';
import 'event.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/route/route.dart';
|
2187c85f
吴启风
feat:课程结构调整
|
27
28
|
class HomePage extends StatelessWidget {
const HomePage({super.key});
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
29
30
31
32
|
@override
Widget build(BuildContext context) {
return BlocProvider(
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
33
34
35
|
create: (BuildContext context) => HomeBloc()
..add(InitEvent())
..add(ExchangeSuccessEvent()),
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
36
37
38
39
40
41
42
43
|
child: Builder(builder: (context) => _HomePageView()),
);
}
}
class _HomePageView extends StatelessWidget {
@override
Widget build(BuildContext context) {
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
44
|
return MultiBlocListener(listeners: [
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
45
|
BlocListener<UserBloc, UserState>(listener: (context, state) {}),
|
f74aeedc
吴启风
feat:首页类名调整
|
46
|
BlocListener<HomeBloc, HomeState>(
|
cde7505e
吴启风
feat:应用内升级
|
47
|
listener: (context, state) {
|
cde7505e
吴启风
feat:应用内升级
|
48
|
if (state is UpdateDialogState) {
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
49
50
|
_showUpdateDialog(
context, state.forceUpdate, state.appVersionEntity);
|
cde7505e
吴启风
feat:应用内升级
|
51
52
|
}
},
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
53
54
|
),
], child: _homeView());
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
55
56
|
}
|
cde7505e
吴启风
feat:应用内升级
|
57
|
Widget _homeView() =>
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
58
59
60
61
62
63
64
65
|
BlocBuilder<HomeBloc, HomeState>(builder: (context, state) {
final bloc = BlocProvider.of<HomeBloc>(context);
return Scaffold(
body: Container(
color: Colors.white,
child: Column(
children: [
BaseHomeHeaderWidget(
|
2d1ead53
吴启风
feat:背景音播放优化
|
66
67
|
callBack: (value) async => {
await AudioPlayerUtil.getInstance()
|
b1869cf8
biao
背景音乐添加
|
68
|
.playAudio(AudioPlayerUtilType.touch),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
69
70
71
72
73
74
75
76
77
78
|
bloc.exchangeResult = value['exchange'],
bloc.add(ExchangeSuccessEvent())
}),
Expanded(
child: Center(
child: Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
|
b2af9c1c
biao
播放修改
|
79
80
|
_checkPermission(() async {
await AudioPlayerUtil.getInstance()
|
b1869cf8
biao
背景音乐添加
|
81
|
.playAudio(AudioPlayerUtilType.classTime);
|
b2af9c1c
biao
播放修改
|
82
83
84
85
86
87
88
89
90
|
pushNamed(AppRouteName.courseUnit)
.then((value) => {
if (value != null)
{
bloc.exchangeResult =
value['exchange'],
bloc.add(ExchangeSuccessEvent())
}
});
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
}, 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),
],
),
),
),
|
4b0aa690
biao
首页小鹅通入口优化
|
115
116
117
118
|
BlocBuilder<UserBloc, UserState>(
builder: (context, userState) {
return GestureDetector(
onTap: () {
|
4b858f67
吴启风
feat:webview库替换
|
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
_checkPermission(() async {
await AudioPlayerUtil.getInstance().pause();
if (Platform.isIOS) {
await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Portrait);
} else {
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
}
Navigator.of(context).pushNamed(
AppRouteName.webView,
arguments: {
'urlStr': AppConsts.xiaoeShopUrl,
'webViewTitle': 'Wow精选'
}).then((value) async => {
if (Platform.isIOS) {
await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape),
} else {
await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]),
},
await AudioPlayerUtil.getInstance().playAudio(
AudioPlayerUtilType.touch),
});
}, bloc);
|
4b0aa690
biao
首页小鹅通入口优化
|
141
142
143
144
|
},
child: Offstage(
offstage: AppConfigHelper.shouldHidePay() ||
!UserUtil.isLogined(),
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
145
|
child: const ShakeImage(),
|
4b0aa690
biao
首页小鹅通入口优化
|
146
147
|
));
}),
|
a04e399e
biao
小鹅购买
|
148
149
150
151
152
|
Expanded(
child: BlocBuilder<UserBloc, UserState>(
builder: (context, userState) {
return GestureDetector(
onTap: () {
|
b2af9c1c
biao
播放修改
|
153
154
155
156
157
158
159
160
161
162
|
_checkPermission(() async {
await AudioPlayerUtil.getInstance()
.playAudio(
AudioPlayerUtilType.gameTime);
pushNamed(AppRouteName.games)
.then((value) => {
AudioPlayerUtil.getInstance()
.playAudio(AudioPlayerUtilType
.touch),
});
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
163
|
}, bloc);
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
164
165
166
167
168
169
170
171
172
|
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(
alignment: AlignmentDirectional.center,
children: [
Image.asset(
'bg_frame_module'.assetPng,
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
173
174
175
176
177
178
|
width: 162.5.w,
height: 203.5.h),
Image.asset(
'pic_module_game'.assetPng,
width: 140.5.w,
height: 172.h)
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
179
180
|
]),
10.verticalSpace,
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
181
|
Image.asset('label_module_game'.assetPng,
|
795fb23f
吴启风
feat:支付成功刷新用户数据
|
182
183
|
width: 124.w, height: 34.h),
],
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
184
185
|
));
}),
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
186
|
),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
187
188
189
190
191
192
193
194
195
|
],
),
),
)
],
),
),
);
});
|
cde7505e
吴启风
feat:应用内升级
|
196
|
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
197
|
_checkPermission(VoidCallback onAllowed, HomeBloc bloc) {
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
198
199
200
201
202
203
204
|
if (UserUtil.isLogined()) {
if (AppConfigHelper.shouldHidePay()) {
onAllowed();
} else {
if (UserUtil.hasPermission()) {
onAllowed();
} else {
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
205
206
207
208
209
210
|
showTwoActionDialog('提示', '忽略', '去续费', '您的课程已到期,请快快续费继续学习吧!',
leftTap: () {
popPage();
}, rightTap: () {
popPage();
pushNamed(AppRouteName.shop).then((value) {
|
b1869cf8
biao
背景音乐添加
|
211
212
|
AudioPlayerUtil.getInstance()
.playAudio(AudioPlayerUtilType.touch);
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
213
214
215
216
217
218
|
if (value != null) {
bloc.exchangeResult = value['exchange'];
bloc.add(ExchangeSuccessEvent());
}
});
});
|
578775ca
吴启风
feat:课程学习增加vip权限控制
|
219
220
221
222
223
224
225
226
|
}
}
} else {
//如果没登录先登录
pushNamed(AppRouteName.login);
}
}
|
cde7505e
吴启风
feat:应用内升级
|
227
228
229
|
///Flutter侧处理升级对话框
///[forcedUpgrade] 是否强制升级
_showUpdateDialog(BuildContext context, bool forcedUpgrade,
|
2c079546
吴启风
feat:应用内更新接口替换
|
230
|
AppVersionEntity appVersionEntity) {
|
cde7505e
吴启风
feat:应用内升级
|
231
232
233
234
235
236
237
238
239
|
showDialog(
context: context,
// 当我们点击除开对话框内容以外的区域是否关闭对话需用用到barrierDismissible参数 . 这个参数默认值是true ,但不能为null .
barrierDismissible: !forcedUpgrade,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(!forcedUpgrade),
child: AlertDialog(
title: const Text('发现新版本'),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
240
|
content: Text(appVersionEntity.remark ?? '修复了一些已知问题'),
|
cde7505e
吴启风
feat:应用内升级
|
241
242
243
|
actions: <Widget>[
TextButton(
child: Text(forcedUpgrade ? '退出' : '取消'),
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
244
245
246
247
248
|
onPressed: () => {
if (forcedUpgrade)
{AppConfigHelper.exitApp()}
else
{Navigator.of(context).pop()}
|
cde7505e
吴启风
feat:应用内升级
|
249
250
251
252
253
|
},
),
TextButton(
child: const Text('升级'),
onPressed: () async {
|
911794fd
吴启风
feat:审核控制增加ios平台条件判断
|
254
|
if (AppConfigHelper.isIosPlatform()) {
|
cde7505e
吴启风
feat:应用内升级
|
255
256
257
|
_launchAppStore("6450870731");
return;
}
|
2c079546
吴启风
feat:应用内更新接口替换
|
258
|
final String? apkUrl = appVersionEntity.packageUrl;
|
cde7505e
吴启风
feat:应用内升级
|
259
260
261
262
263
264
265
266
267
|
if (apkUrl == null || apkUrl.isEmpty) {
return;
}
UpdateModel model = UpdateModel(
apkUrl,
"wowenglish.apk",
"ic_launcher",
'',
);
|
e6a08b82
biao
修复兑换之后回到首页不刷新问题;修...
|
268
269
|
AzhonAppUpdate.update(model)
.then((value) => debugPrint('$value'));
|
cde7505e
吴启风
feat:应用内升级
|
270
271
272
273
274
275
|
if (!forcedUpgrade) {
Navigator.of(context).pop();
}
},
),
],
|
6d61919a
吴启风
feat:增加过渡页&集成串联游戏
|
276
277
|
),
);
|
cde7505e
吴启风
feat:应用内升级
|
278
279
280
281
282
283
284
285
286
287
288
289
|
},
);
}
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:增加过渡页&集成串联游戏
|
290
|
}
|