Blame view

lib/pages/user/user_page.dart 10.9 KB
8b5ef002   xiaoyu   添加打开游戏的测试代码
1
2
3
  import 'dart:io';
  import 'dart:async';
  import 'package:flutter/services.dart';
22b7d4da   Key   feat: user, api path
4
  import 'package:flutter/material.dart';
089ccd5c   Key   fixed: user util ...
5
  import 'package:flutter_bloc/flutter_bloc.dart';
e12dbc82   Key   user module
6
  import 'package:flutter_screenutil/flutter_screenutil.dart';
8d1f93b4   吴启风   feat:隐藏组件优化
7
  import 'package:wow_english/common/core/app_config_helper.dart';
c61b3c1a   Key   feat: toast_util....
8
  import 'package:wow_english/common/core/app_consts.dart';
e12dbc82   Key   user module
9
  import 'package:wow_english/common/core/assets_const.dart';
aa4e28be   Key   removed: cache_bl...
10
  import 'package:wow_english/common/core/user_util.dart';
bb0406fb   Key   feat: 账户注销
11
  import 'package:wow_english/common/dialogs/show_dialog.dart';
4b358e22   liangchengyou   feat:调整文件结构
12
  import 'package:wow_english/common/widgets/we_app_bar.dart';
089ccd5c   Key   fixed: user util ...
13
  import 'package:wow_english/models/user_entity.dart';
e12dbc82   Key   user module
14
  import 'package:wow_english/pages/user/bloc/user_bloc.dart';
c95453ce   Key   feat: User界面完善
15
  import 'package:wow_english/route/route.dart';
c61b3c1a   Key   feat: toast_util....
16
  import 'package:wow_english/utils/image_util.dart';
dfd4d15d   xiaoyu   添加联系客服功能
17
  import 'package:url_launcher/url_launcher.dart';
22b7d4da   Key   feat: user, api path
18
19
20
21
22
23
  
  class UserPage extends StatelessWidget {
    const UserPage({super.key});
  
    @override
    Widget build(BuildContext context) {
c948a9ea   liangchengyou   feat:个人信息更改模块功能
24
      return _UserView();
e12dbc82   Key   user module
25
26
27
28
    }
  }
  
  class _UserView extends StatelessWidget {
49e626e9   Key   feat: log_util.dart
29
30
    final String bannerUrl = '';
  
8b5ef002   xiaoyu   添加打开游戏的测试代码
31
32
33
    /// 方法
    final MethodChannel methodChannel = const MethodChannel('wow_english/game_method_channel');
  
e12dbc82   Key   user module
34
35
    @override
    Widget build(BuildContext context) {
c61b3c1a   Key   feat: toast_util....
36
37
      return _pageWidget();
    }
c95453ce   Key   feat: User界面完善
38
  
c61b3c1a   Key   feat: toast_util....
39
    Widget _pageWidget() => BlocBuilder<UserBloc, UserState>(
c948a9ea   liangchengyou   feat:个人信息更改模块功能
40
41
42
      builder: (context, state) {
        UserEntity user = UserUtil.getUser()!;
        final userBloc = BlocProvider.of<UserBloc>(context);
c95453ce   Key   feat: User界面完善
43
  
c948a9ea   liangchengyou   feat:个人信息更改模块功能
44
45
46
47
48
49
        // 常规按钮的字体样式
        final textStyle21sp = TextStyle(
          //fontWeight: FontWeight.w600,
          color: const Color(0xFF333333),
          fontSize: 21.sp,
        );
c61b3c1a   Key   feat: toast_util....
50
  
c948a9ea   liangchengyou   feat:个人信息更改模块功能
51
52
53
54
55
56
57
        // 常规按钮的样式
        var normalButtonStyle = ButtonStyle(
          side: MaterialStateProperty.all(BorderSide(color: const Color(0xFF140C10), width: 1.5.w)),
          shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
          minimumSize: MaterialStateProperty.all(Size(double.infinity, 58.h)),
          backgroundColor: MaterialStateProperty.all(Colors.white),
        );
c61b3c1a   Key   feat: toast_util....
58
  
c948a9ea   liangchengyou   feat:个人信息更改模块功能
59
60
61
62
63
64
65
66
67
        return Scaffold(
            appBar: const WEAppBar(),
            body: SingleChildScrollView(
              padding: EdgeInsets.only(left: 17.w, right: 17.w, top: 10.h, bottom: 22.h),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  // todo banner,暂时没有接口获取banner URL
                  /*Offstage(
c9df43c8   Key   feat: 修改个人信息、接口
68
69
70
71
72
73
74
                        child: Column(
                          children: [
                            Container(child: Image.asset(bannerUrl), constraints: BoxConstraints(maxHeight: 196.h)),
                            30.verticalSpace,
                          ],
                        ),
                      ),*/
c948a9ea   liangchengyou   feat:个人信息更改模块功能
75
76
77
78
79
80
81
82
83
84
85
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      CircleAvatar(
                        radius: 40.r,
                        backgroundColor: const Color(0xFF140C10),
                        child: CircleAvatar(
                          radius: 38.5.r,
                          backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
                        ),
                        /*child: ClipOval(
c61b3c1a   Key   feat: toast_util....
86
87
                          child: OwImageWidget(name: user.avatarUrl ?? AssetsConst.wowLogo, fit: BoxFit.contain,),
                        )*/
c948a9ea   liangchengyou   feat:个人信息更改模块功能
88
89
90
91
                      ),
                      32.horizontalSpace,
                      Expanded(
                          child: Column(
c61b3c1a   Key   feat: toast_util....
92
93
                            children: [
                              Row(
c95453ce   Key   feat: User界面完善
94
                                children: [
c61b3c1a   Key   feat: toast_util....
95
96
97
98
99
100
101
102
103
104
                                  LimitedBox(
                                    maxWidth: 220.w,
                                    child: Text(
                                      user.name,
                                      //'1231231231312312312312312312312312312312312312312',
                                      style: textStyle21sp,
                                      overflow: TextOverflow.ellipsis,
                                    ),
                                  ),
                                  14.horizontalSpace,
c95453ce   Key   feat: User界面完善
105
                                  Text(
c61b3c1a   Key   feat: toast_util....
106
107
108
109
110
                                    user.getGenderString(),
                                    style: textStyle21sp,
                                  ),
                                  14.horizontalSpace,
                                  Offstage(
0529078d   吴启风   feat:隐藏用户信息页内购元素
111
                                    offstage: user.effectiveDate == null || AppConfigHelper.shouldHidePay(),
c61b3c1a   Key   feat: toast_util....
112
113
114
                                    child: Image.asset(
                                      AssetsConst.icVip,
                                      height: 18.h,
c95453ce   Key   feat: User界面完善
115
116
117
118
                                    ),
                                  )
                                ],
                              ),
c61b3c1a   Key   feat: toast_util....
119
                              Offstage(
0529078d   吴启风   feat:隐藏用户信息页内购元素
120
                                offstage: user.effectiveDate == null || AppConfigHelper.shouldHidePay(),
c61b3c1a   Key   feat: toast_util....
121
122
123
                                child: Row(
                                  children: [
                                    Text(
7d417b04   吴启风   feat:fix用户vip到期日问题
124
                                      "${user.getEffectiveDate()} 到期",
c61b3c1a   Key   feat: toast_util....
125
126
127
128
129
130
131
132
133
134
                                      style: TextStyle(
                                        color: const Color(0xFFE11212),
                                        fontSize: 17.sp,
                                      ),
                                    )
                                  ],
                                ),
                              )
                            ],
                          )),
2e5751ab   liangchengyou   feat:更新版本号1.0.2
135
136
137
138
                      TextButton(
                        child: Text(
                          "修改个人信息>",
                          style: textStyle21sp,
c948a9ea   liangchengyou   feat:个人信息更改模块功能
139
                        ),
2e5751ab   liangchengyou   feat:更新版本号1.0.2
140
141
142
                        onPressed: () {
                          pushNamed(AppRouteName.userInformation);
                        },
c948a9ea   liangchengyou   feat:个人信息更改模块功能
143
                      )
c61b3c1a   Key   feat: toast_util....
144
145
                    ],
                  ),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
146
                  30.verticalSpace,
68a4c50a   xiaoyu   Merge remote-trac...
147
148
                  // 打开游戏界面 供审核用
                  ((UserUtil.getUser()?.phoneNum == '17730280759' || UserUtil.getUser()?.phoneNum == '17718485544') ? OutlinedButton(
8b5ef002   xiaoyu   添加打开游戏的测试代码
149
                    onPressed: () {
68a4c50a   xiaoyu   Merge remote-trac...
150
                      methodChannel.invokeMethod('openGamePage', { "gameId": 1 });
8b5ef002   xiaoyu   添加打开游戏的测试代码
151
152
153
                    },
                    style: normalButtonStyle,
                    child: Text(
68a4c50a   xiaoyu   Merge remote-trac...
154
                      "进入游戏",
8b5ef002   xiaoyu   添加打开游戏的测试代码
155
156
                      style: textStyle21sp,
                    ),
68a4c50a   xiaoyu   Merge remote-trac...
157
158
                  ) : 1.verticalSpace),
                  ((UserUtil.getUser()?.phoneNum == '17730280759' || UserUtil.getUser()?.phoneNum == '17718485544') ? 12.verticalSpace : 1.verticalSpace),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
159
160
161
162
163
164
165
166
167
                  OutlinedButton(
                    onPressed: () => pushNamed(AppRouteName.fogPwd),
                    style: normalButtonStyle,
                    child: Text(
                      "修改密码",
                      style: textStyle21sp,
                    ),
                  ),
                  12.verticalSpace,
c948a9ea   liangchengyou   feat:个人信息更改模块功能
168
                  Offstage(
8d1f93b4   吴启风   feat:隐藏组件优化
169
                    offstage: AppConfigHelper.shouldHidePay(),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
170
171
172
173
174
175
176
177
178
                    child: OutlinedButton(
                        onPressed: () => pushNamed(AppRouteName.exLesson),
                        style: normalButtonStyle,
                        child: Text(
                          "兑换课程",
                          style: textStyle21sp,
                        )),
                  ),
                  Offstage(
8d1f93b4   吴启风   feat:隐藏组件优化
179
                    offstage: AppConfigHelper.shouldHidePay(),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
180
181
182
183
184
185
186
187
188
189
190
                    child: 12.verticalSpace,
                  ),
                  OutlinedButton(
                      onPressed: () {
                        pushNamed(AppRouteName.webView,arguments: {'urlStr': AppConsts.userPrivacyPolicyUrl, 'webViewTitle': '隐私协议'});
                      },
                      style: normalButtonStyle,
                      child: Text(
                        "隐私协议",
                        style: textStyle21sp,
                      )),
3840b7fe   liangchengyou   feat:更新设置页面
191
192
193
                  12.verticalSpace,
                  OutlinedButton(
                      onPressed: () {
dfd4d15d   xiaoyu   添加联系客服功能
194
195
196
197
198
199
200
201
202
203
204
                        String phone ='tel:+8618856084180';
                        _launchPhone(phone);
                      },
                      style: normalButtonStyle,
                      child: Text(
                        "联系客服",
                        style: textStyle21sp,
                      )),
                  12.verticalSpace,
                  OutlinedButton(
                      onPressed: () {
3840b7fe   liangchengyou   feat:更新设置页面
205
206
207
208
209
210
211
                        pushNamed(AppRouteName.setting);
                      },
                      style: normalButtonStyle,
                      child: Text(
                        "设置",
                        style: textStyle21sp,
                      )),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
212
213
                  30.verticalSpace,
                  OutlinedButton(
68dd7ba8   liangchengyou   feat:首页主题颜色+已知问题修改
214
                      onPressed: () {
3840b7fe   liangchengyou   feat:更新设置页面
215
                        showTwoActionDialog(barrierDismissible:false,'提示', '取消', '确认', '您确认要退出Wow English吗?',leftTap: (){
68dd7ba8   liangchengyou   feat:首页主题颜色+已知问题修改
216
                          popPage();
3840b7fe   liangchengyou   feat:更新设置页面
217
                        },rightTap: (){
68dd7ba8   liangchengyou   feat:首页主题颜色+已知问题修改
218
219
220
221
                          popPage();
                          userBloc.add(UserLogout());
                        });
                      },
c948a9ea   liangchengyou   feat:个人信息更改模块功能
222
223
224
225
226
                      style: ButtonStyle(
                        side: MaterialStateProperty.all(const BorderSide(color: Color(0xFF140C10), width: 1.5)),
                        shape: MaterialStateProperty.all(
                            RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
                        minimumSize: MaterialStateProperty.all(Size(295.w, 40.h)),
68dd7ba8   liangchengyou   feat:首页主题颜色+已知问题修改
227
                        backgroundColor: MaterialStateProperty.all(const Color(0xFFFBB621)),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
228
229
230
231
232
233
234
235
236
                      ),
                      child: Text(
                        "退出登录",
                        style: TextStyle(
                          //fontWeight: FontWeight.w600,
                          color: Colors.white,
                          fontSize: 17.sp,
                        ),
                      )),
3840b7fe   liangchengyou   feat:更新设置页面
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
                  // 30.verticalSpace,
                  // TextButton(
                  //     onPressed: () {
                  //       //userBloc.add(UserDelete())
                  //       showTwoActionDialog('注销账号', '取消', '注销', '请谨慎操作!\n注销后不可恢复哦!', () {
                  //         popPage();
                  //       }, () {
                  //         userBloc.add(UserDelete());
                  //         popPage();
                  //       });
                  //     },
                  //     child: Text(
                  //       "注销账号",
                  //       style: TextStyle(
                  //         //fontWeight: FontWeight.w600,
                  //         color: Colors.red,
                  //         fontSize: 15.sp,
                  //       ),
                  //     )),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
256
257
258
259
260
                ],
              ),
            ));
      },
    );
dfd4d15d   xiaoyu   添加联系客服功能
261
262
263
264
265
266
267
268
  
    void _launchPhone(String phone) async {
      if (await canLaunchUrl(Uri.parse(phone))) {
        await launchUrl(Uri.parse(phone));
      } else {
        throw 'Could not phone $phone';
      }
    }
22b7d4da   Key   feat: user, api path
269
  }