Blame view

lib/pages/user/user_page.dart 9.17 KB
22b7d4da   Key   feat: user, api path
1
  import 'package:flutter/material.dart';
089ccd5c   Key   fixed: user util ...
2
  import 'package:flutter_bloc/flutter_bloc.dart';
e12dbc82   Key   user module
3
  import 'package:flutter_screenutil/flutter_screenutil.dart';
c61b3c1a   Key   feat: toast_util....
4
  import 'package:wow_english/common/core/app_consts.dart';
e12dbc82   Key   user module
5
  import 'package:wow_english/common/core/assets_const.dart';
aa4e28be   Key   removed: cache_bl...
6
  import 'package:wow_english/common/core/user_util.dart';
bb0406fb   Key   feat: 账户注销
7
  import 'package:wow_english/common/dialogs/show_dialog.dart';
4b358e22   liangchengyou   feat:调整文件结构
8
  import 'package:wow_english/common/widgets/we_app_bar.dart';
089ccd5c   Key   fixed: user util ...
9
  import 'package:wow_english/models/user_entity.dart';
e12dbc82   Key   user module
10
  import 'package:wow_english/pages/user/bloc/user_bloc.dart';
c95453ce   Key   feat: User界面完善
11
  import 'package:wow_english/route/route.dart';
c61b3c1a   Key   feat: toast_util....
12
  import 'package:wow_english/utils/image_util.dart';
22b7d4da   Key   feat: user, api path
13
14
15
16
17
18
  
  class UserPage extends StatelessWidget {
    const UserPage({super.key});
  
    @override
    Widget build(BuildContext context) {
e12dbc82   Key   user module
19
20
      return BlocProvider(
        create: (context) => UserBloc(),
c95453ce   Key   feat: User界面完善
21
        child: const _UserView(),
e12dbc82   Key   user module
22
23
24
25
26
27
28
      );
    }
  }
  
  class _UserView extends StatelessWidget {
    const _UserView({super.key});
  
49e626e9   Key   feat: log_util.dart
29
30
    final String bannerUrl = '';
  
e12dbc82   Key   user module
31
32
    @override
    Widget build(BuildContext context) {
c61b3c1a   Key   feat: toast_util....
33
34
      return _pageWidget();
    }
c95453ce   Key   feat: User界面完善
35
  
c61b3c1a   Key   feat: toast_util....
36
37
38
39
40
    Widget _pageWidget() => BlocBuilder<UserBloc, UserState>(
          /*buildWhen: (previous, current) {
            return current != previous;
          },*/
          builder: (context, state) {
aa4e28be   Key   removed: cache_bl...
41
            UserEntity user = UserUtil.getUser()!;
c61b3c1a   Key   feat: toast_util....
42
            final userBloc = BlocProvider.of<UserBloc>(context);
c95453ce   Key   feat: User界面完善
43
  
c61b3c1a   Key   feat: toast_util....
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
            // 常规按钮的字体样式
            final textStyle21sp = TextStyle(
              //fontWeight: FontWeight.w600,
              color: const Color(0xFF333333),
              fontSize: 21.sp,
            );
  
            // 常规按钮的样式
            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),
            );
  
            return Scaffold(
da82bd70   Key   feat: user_inform...
60
                //backgroundColor: Colors.white,
c61b3c1a   Key   feat: toast_util....
61
62
63
64
65
66
                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>[
c9df43c8   Key   feat: 修改个人信息、接口
67
68
69
70
71
72
73
74
75
                      // todo banner,暂时没有接口获取banner URL
                      /*Offstage(
                        child: Column(
                          children: [
                            Container(child: Image.asset(bannerUrl), constraints: BoxConstraints(maxHeight: 196.h)),
                            30.verticalSpace,
                          ],
                        ),
                      ),*/
c61b3c1a   Key   feat: toast_util....
76
77
78
79
80
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          CircleAvatar(
                            radius: 40.r,
608c05b4   liangchengyou   feat:兑换课程
81
                            backgroundColor: const Color(0xFF140C10),
c61b3c1a   Key   feat: toast_util....
82
83
84
                            child: CircleAvatar(
                              radius: 38.5.r,
                              backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
c95453ce   Key   feat: User界面完善
85
                            ),
c61b3c1a   Key   feat: toast_util....
86
87
88
89
90
91
92
93
94
                            /*child: ClipOval(
                          child: OwImageWidget(name: user.avatarUrl ?? AssetsConst.wowLogo, fit: BoxFit.contain,),
                        )*/
                          ),
                          32.horizontalSpace,
                          Expanded(
                              child: Column(
                            children: [
                              Row(
c95453ce   Key   feat: User界面完善
95
                                children: [
c61b3c1a   Key   feat: toast_util....
96
97
98
99
100
101
102
103
104
105
                                  LimitedBox(
                                    maxWidth: 220.w,
                                    child: Text(
                                      user.name,
                                      //'1231231231312312312312312312312312312312312312312',
                                      style: textStyle21sp,
                                      overflow: TextOverflow.ellipsis,
                                    ),
                                  ),
                                  14.horizontalSpace,
c95453ce   Key   feat: User界面完善
106
                                  Text(
c61b3c1a   Key   feat: toast_util....
107
108
109
110
111
112
113
114
115
                                    user.getGenderString(),
                                    style: textStyle21sp,
                                  ),
                                  14.horizontalSpace,
                                  Offstage(
                                    offstage: user.effectiveDate == null,
                                    child: Image.asset(
                                      AssetsConst.icVip,
                                      height: 18.h,
c95453ce   Key   feat: User界面完善
116
117
118
119
                                    ),
                                  )
                                ],
                              ),
c61b3c1a   Key   feat: toast_util....
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
                              Offstage(
                                offstage: user.effectiveDate == null,
                                child: Row(
                                  children: [
                                    Text(
                                      "${user.effectiveDate} 到期",
                                      style: TextStyle(
                                        color: const Color(0xFFE11212),
                                        fontSize: 17.sp,
                                      ),
                                    )
                                  ],
                                ),
                              )
                            ],
                          )),
                          TextButton(
                            child: Text(
                              "修改个人信息>",
                              style: textStyle21sp,
                            ),
da82bd70   Key   feat: user_inform...
141
142
143
                            onPressed: () {
                              Navigator.of(AppRouter.context).pushNamed(AppRouteName.userInformation);
                            },
c61b3c1a   Key   feat: toast_util....
144
145
                          )
                        ],
c95453ce   Key   feat: User界面完善
146
                      ),
c61b3c1a   Key   feat: toast_util....
147
148
                      30.verticalSpace,
                      OutlinedButton(
da82bd70   Key   feat: user_inform...
149
                        onPressed: () => Navigator.of(context).pushNamed(AppRouteName.fogPwd),
c61b3c1a   Key   feat: toast_util....
150
151
152
153
154
                        style: normalButtonStyle,
                        child: Text(
                          "修改密码",
                          style: textStyle21sp,
                        ),
c95453ce   Key   feat: User界面完善
155
                      ),
c61b3c1a   Key   feat: toast_util....
156
157
                      12.verticalSpace,
                      OutlinedButton(
608c05b4   liangchengyou   feat:兑换课程
158
                          onPressed: () => Navigator.of(context).pushNamed(AppRouteName.exLesson),
c61b3c1a   Key   feat: toast_util....
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
                          style: normalButtonStyle,
                          child: Text(
                            "兑换课程",
                            style: textStyle21sp,
                          )),
                      12.verticalSpace,
                      OutlinedButton(
                          onPressed: () => {
                                Navigator.of(context).pushNamed(AppRouteName.webView,
                                    arguments: {'urlStr': AppConsts.userPrivacyPolicyUrl, 'webViewTitle': '隐私协议'})
                              },
                          style: normalButtonStyle,
                          child: Text(
                            "隐私协议",
                            style: textStyle21sp,
                          )),
                      30.verticalSpace,
                      OutlinedButton(
c9df43c8   Key   feat: 修改个人信息、接口
177
                          onPressed: () => userBloc.add(UserLogout()),
c61b3c1a   Key   feat: toast_util....
178
179
180
181
182
183
184
185
                          style: ButtonStyle(
                            side: MaterialStateProperty.all(BorderSide(color: const Color(0xFF140C10), width: 1.5)),
                            shape: MaterialStateProperty.all(
                                RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
                            minimumSize: MaterialStateProperty.all(Size(295.w, 40.h)),
                            backgroundColor: MaterialStateProperty.all(Color(0xFFFBB621)),
                          ),
                          child: Text(
c9df43c8   Key   feat: 修改个人信息、接口
186
                            "退出登录",
c61b3c1a   Key   feat: toast_util....
187
188
189
190
191
192
                            style: TextStyle(
                              //fontWeight: FontWeight.w600,
                              color: Colors.white,
                              fontSize: 17.sp,
                            ),
                          )),
a4d8eaa2   Key   feat: 登录时账户有效性校验
193
194
                      30.verticalSpace,
                      TextButton(
bb0406fb   Key   feat: 账户注销
195
196
197
198
199
200
201
202
203
                          onPressed: () {
                            //userBloc.add(UserDelete())
                            showTwoActionDialog('注销账号', '取消', '注销', '请谨慎操作!\n注销后不可恢复哦!', () {
                              popPage();
                            }, () {
                              userBloc.add(UserDelete());
                              popPage();
                            });
                          },
a4d8eaa2   Key   feat: 登录时账户有效性校验
204
205
206
207
208
209
210
211
                          child: Text(
                            "注销账号",
                            style: TextStyle(
                              //fontWeight: FontWeight.w600,
                              color: Colors.red,
                              fontSize: 15.sp,
                            ),
                          )),
c61b3c1a   Key   feat: toast_util....
212
213
214
215
216
                    ],
                  ),
                ));
          },
        );
22b7d4da   Key   feat: user, api path
217
  }