Blame view

lib/pages/home/view.dart 12.4 KB
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
  }