Blame view

lib/pages/user/modify/modify_user_information_page.dart 8.44 KB
c9df43c8   Key   feat: 修改个人信息、接口
1
  import 'package:flutter/cupertino.dart';
49e626e9   Key   feat: log_util.dart
2
  import 'package:flutter/material.dart';
c9df43c8   Key   feat: 修改个人信息、接口
3
  import 'package:flutter/services.dart';
49e626e9   Key   feat: log_util.dart
4
  import 'package:flutter_bloc/flutter_bloc.dart';
c9df43c8   Key   feat: 修改个人信息、接口
5
6
  import 'package:flutter_screenutil/flutter_screenutil.dart';
  import 'package:wow_english/common/core/assets_const.dart';
e6a4e63c   Key   fixed: 修改个人信息性别
7
  import 'package:wow_english/common/core/user_util.dart';
c9df43c8   Key   feat: 修改个人信息、接口
8
  import 'package:wow_english/common/widgets/textfield_customer_widget.dart';
49e626e9   Key   feat: log_util.dart
9
10
  import 'package:wow_english/common/widgets/we_app_bar.dart';
  import 'package:wow_english/pages/user/bloc/user_bloc.dart';
c948a9ea   liangchengyou   feat:个人信息更改模块功能
11
12
13
  import 'package:wow_english/pages/user/modify/user_info_bloc/user_info_bloc.dart';
  import 'package:wow_english/route/route.dart';
  import 'package:wow_english/utils/toast_util.dart';
49e626e9   Key   feat: log_util.dart
14
15
  
  enum ModifyUserInformationType {
c9df43c8   Key   feat: 修改个人信息、接口
16
17
18
19
    avatar('头像'),
    name('名字'),
    age('年龄'),
    gender('性别');
49e626e9   Key   feat: log_util.dart
20
21
22
23
24
25
26
27
28
29
30
  
    const ModifyUserInformationType(this.title);
  
    final String title;
  }
  
  class ModifyUserInformationPage extends StatelessWidget {
    final ModifyUserInformationType type;
  
    const ModifyUserInformationPage({super.key, required this.type});
  
c9df43c8   Key   feat: 修改个人信息、接口
31
32
33
34
35
36
    static push(BuildContext context, ModifyUserInformationType type) {
      Navigator.of(context).push(CupertinoPageRoute(builder: (context) {
        return ModifyUserInformationPage(type: type);
      }));
    }
  
49e626e9   Key   feat: log_util.dart
37
38
    @override
    Widget build(BuildContext context) {
c948a9ea   liangchengyou   feat:个人信息更改模块功能
39
40
41
42
43
44
      String text = '';
      if (type == ModifyUserInformationType.age) {
        text = UserUtil.getUser()!.age.toString();
      } else if (type == ModifyUserInformationType.name) {
        text = UserUtil.getUser()!.name;
      }
49e626e9   Key   feat: log_util.dart
45
      return BlocProvider(
c948a9ea   liangchengyou   feat:个人信息更改模块功能
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
        create: (context) => UserInfoBloc()..add(InitControllerTextEvent(text)),
        child: MultiBlocListener(
          listeners: [
            BlocListener<UserBloc,UserState>(listener: (context, state){
              if (state is UserInfoUpdated) {
                showToast('修改成功');
                popPage();
              }
            })
          ],
          child: Scaffold(
            backgroundColor: Colors.white,
            appBar: WEAppBar(
              titleText: '修改${type.title}',
            ),
            body: BlocBuilder<UserInfoBloc, UserInfoState>(
                builder: (context, state) {
                  final bloc = BlocProvider.of<UserInfoBloc>(context);
                  return SingleChildScrollView(
                      child: Column(
c9df43c8   Key   feat: 修改个人信息、接口
66
                        children: [
c948a9ea   liangchengyou   feat:个人信息更改模块功能
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
                          Padding(
                              padding: EdgeInsets.only(left: 65.w, right: 55.w, top: 38.h),
                              child: Row(
                                children: [
                                  Text(
                                    type.title,
                                    style: TextStyle(
                                      fontWeight: FontWeight.w700,
                                      color: const Color(0xFF333333),
                                      fontSize: 21.sp,
                                    ),
                                  ),
                                  20.horizontalSpace,
                                  // 输入框 or 选择框
                                  _buildTextFieldWidget(context),
                                  // 占位
                                  Expanded(
                                    child: Container(),
                                  ),
                                  // 按钮
                                  GestureDetector(
                                    onTap: () {
                                      var text = '';
                                      if (type == ModifyUserInformationType.name || type == ModifyUserInformationType.age){
                                        if(bloc.modifyTextController.text.isEmpty) {
                                          showToast('内容不能为空');
                                          return;
                                        }
                                        text = bloc.modifyTextController.text;
                                      }
  
                                      if (type == ModifyUserInformationType.gender) {
                                        text = bloc.gender.toString();
                                      }
                                      // 更新type类型的字段
                                      context.read<UserBloc>().add(UserUpdate(type,text));
                                    },
                                    child: Container(
                                      alignment: Alignment.center,
                                      width: 90.w,
                                      height: 44.h,
                                      decoration: const BoxDecoration(
                                        image: DecorationImage(image: AssetImage(AssetsConst.bgButtonBlue), fit: BoxFit.fill),
                                      ),
                                      child: Text(
                                        '确定',
                                        style: TextStyle(fontSize: 17.sp, color: Colors.white),
                                      ),
                                    ),
                                  )
                                ],
                              )),
                          Stack(
                            alignment: Alignment.topRight,
                            children: [
                              Image.asset(
                                AssetsConst.bgEditUserInformation,
                                width: double.infinity,
c9df43c8   Key   feat: 修改个人信息、接口
125
                              ),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
126
127
128
129
                              Positioned(
                                right: 125.w,
                                top: 10.h,
                                child: Image.asset(AssetsConst.bgIcSteveWrite, width: 161.w, height: 249.w),
c9df43c8   Key   feat: 修改个人信息、接口
130
                              ),
c948a9ea   liangchengyou   feat:个人信息更改模块功能
131
132
                            ],
                          ),
c9df43c8   Key   feat: 修改个人信息、接口
133
                        ],
c948a9ea   liangchengyou   feat:个人信息更改模块功能
134
135
                      ));
                }),
49e626e9   Key   feat: log_util.dart
136
137
138
139
          ),
        ),
      );
    }
23b46e8e   Key   feat: 修改个人信息性别
140
141
  
    Widget _buildTextFieldWidget(BuildContext context) {
23b46e8e   Key   feat: 修改个人信息性别
142
      if (type == ModifyUserInformationType.gender) {
c948a9ea   liangchengyou   feat:个人信息更改模块功能
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
        return BlocBuilder<UserInfoBloc, UserInfoState>(
            builder: (context,state){
              final bloc = BlocProvider.of<UserInfoBloc>(context);
              return Row(
                children: <Widget>[
                  GestureDetector(
                    onTap: () => bloc.add(ChangeGenderEvent(0)),
                    child: _buildSexWidget('男', bloc.gender == 0),
                  ),
                  70.horizontalSpace,
                  GestureDetector(
                    onTap: () => bloc.add(ChangeGenderEvent(1)),
                    child: _buildSexWidget('女', bloc.gender == 1),
                  )
                ],
              );
            });
23b46e8e   Key   feat: 修改个人信息性别
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
      }
  
      var formatters = [
        LengthLimitingTextInputFormatter(12),
        FilteringTextInputFormatter.deny(RegExp('[ ]')),
      ];
      var inputType = TextInputType.name;
      // 当输入年龄时
      if (type == ModifyUserInformationType.age) {
        formatters = [
          LengthLimitingTextInputFormatter(2),
          FilteringTextInputFormatter.deny(RegExp('[ ]')),
        ];
        inputType = TextInputType.number;
      }
e6a4e63c   Key   fixed: 修改个人信息性别
175
  
c948a9ea   liangchengyou   feat:个人信息更改模块功能
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
      return BlocBuilder<UserInfoBloc, UserInfoState>(
          builder: (context,state){
            final bloc = BlocProvider.of<UserInfoBloc>(context);
            return TextFieldCustomerWidget(
              height: 65.h,
              width: 222.w,
              textStyle: TextStyle(
                fontWeight: FontWeight.w700,
                color: const Color(0xFF333333),
                fontSize: 21.sp,
              ),
              bgImageName: 'Input_layer_up',
              textInputType: inputType,
              inputFormatters: formatters,
              controller: bloc.modifyTextController,
              /*onChangeValue: (String value) {
23b46e8e   Key   feat: 修改个人信息性别
192
193
                            bloc.add(CodeNumberChangeEvent());
                          },*/
c948a9ea   liangchengyou   feat:个人信息更改模块功能
194
195
            );
          });
23b46e8e   Key   feat: 修改个人信息性别
196
    }
e5c9e98f   liangchengyou   feat:首页模块颜色
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
  
    Widget _buildSexWidget(String title,bool isSelect) {
      return Row(
        children: [
          Container(
            width: 21.h,
            height: 21.h,
            padding: EdgeInsets.all(4.h),
            decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(21.r),
                border: Border.all(
                    color: const Color(0xFF140C10),
                    width: 1.5
                )
            ),
            child: Offstage(
              offstage:!isSelect,
              child: ClipRRect(
                borderRadius: BorderRadius.circular(13.r),
                child: Container(
                  color: Colors.blue,
                ),
              ),
            ),
          ),
          5.horizontalSpace,
          Text(title)
        ],
      );
    }
49e626e9   Key   feat: log_util.dart
227
  }