diff --git a/lib/common/request/config.dart b/lib/common/request/config.dart index aa3bba0..306efaf 100644 --- a/lib/common/request/config.dart +++ b/lib/common/request/config.dart @@ -1,6 +1,11 @@ +import 'package:flutter/foundation.dart'; + ///request config class RequestConfig { - static String baseUrl = 'http://wow-app.dev.kouyuxingqiu.com/'; + static String baseUrlDev = 'http://wow-app.dev.kouyuxingqiu.com/'; + static String baseUrlProd = 'http://app-api.pro.kouyuxingqiu.com/'; + static String baseUrl = kDebugMode ? baseUrlDev : baseUrlProd; + static const connectTimeout = Duration(seconds: 15); static const successCode = 200; } diff --git a/lib/common/request/dao/user_dao.dart b/lib/common/request/dao/user_dao.dart index 6cdaa70..409aa32 100644 --- a/lib/common/request/dao/user_dao.dart +++ b/lib/common/request/dao/user_dao.dart @@ -78,7 +78,9 @@ class UserDao { return await requestClient.put(Apis.setUserInfo, data: userEntity.toUpdateJson()); } - static Future updateUserInfoField({name, age, gender, avatarUrl}) async { + /// 更新用户信息指定字段 + static Future updateUserInfoField({String? name, int? age, int? gender, String? avatarUrl}) async { + Log.d('name=$name, age=$age, gender=$gender, avatarUrl=$avatarUrl'); final Map data = {}; if (name != null) { data['name'] = name; diff --git a/lib/pages/user/bloc/user_bloc.dart b/lib/pages/user/bloc/user_bloc.dart index d869498..5267fb4 100644 --- a/lib/pages/user/bloc/user_bloc.dart +++ b/lib/pages/user/bloc/user_bloc.dart @@ -11,16 +11,22 @@ part 'user_state.dart'; class UserBloc extends Bloc { final TextEditingController modifyTextController = TextEditingController(); + int tempGender = 0; UserBloc() : super(UserInitial()) { on(_logout); on(_updateUser); + on(_updateUIUser); } void _logout(UserLogout event, Emitter emitter) async { await UserDao.logout(); } + void _updateUIUser(UserUIUpdate event, Emitter emitter) async { + emitter(UserInfoUpdated()); + } + void _updateUser(UserUpdate event, Emitter emitter) async { Log.d('_updateUser, event: ${event.type}, emitter.isDone: ${emitter.isDone}, text=${modifyTextController.text}'); UserEntity user = UserUtil.getUser()!; @@ -40,8 +46,14 @@ class UserBloc extends Bloc { break; case ModifyUserInformationType.age: // todo 校验格式 - int age = modifyTextController.text as int; try { + int age; + try { + age = modifyTextController.text as int; + } catch (e) { + Log.w(e.toString()); + throw '年龄格式错误'; + } await UserDao.updateUserInfoField(age: age); // 修改成功,更新本地缓存及UI user.age = age; @@ -52,10 +64,11 @@ class UserBloc extends Bloc { break; case ModifyUserInformationType.gender: try { - await UserDao.updateUserInfoField(gender: user.gender); + await UserDao.updateUserInfoField(gender: tempGender); + user.gender = tempGender; emitter(UserInfoUpdated()); } catch (e) { - Log.e('_updateUser age, e: $e'); + Log.e('_updateUser gender, e: $e'); } break; } diff --git a/lib/pages/user/bloc/user_event.dart b/lib/pages/user/bloc/user_event.dart index 87d5b3f..ce6f199 100644 --- a/lib/pages/user/bloc/user_event.dart +++ b/lib/pages/user/bloc/user_event.dart @@ -11,3 +11,9 @@ class UserUpdate extends UserEvent { UserUpdate(this.type); } + +class UserUIUpdate extends UserEvent { + final ModifyUserInformationType type; + + UserUIUpdate(this.type); +} diff --git a/lib/pages/user/information/user_information_page.dart b/lib/pages/user/information/user_information_page.dart index e90fc78..b2cc57f 100644 --- a/lib/pages/user/information/user_information_page.dart +++ b/lib/pages/user/information/user_information_page.dart @@ -44,7 +44,8 @@ class _UserInformationContentView extends StatelessWidget { void _openModifyPage(BuildContext context, ModifyUserInformationType type) { Log.d('_openModifyPage($type)'); - ModifyUserInformationPage.push(context, type); + // 暂时关闭修改,修复后打开 + //ModifyUserInformationPage.push(context, type); } @override diff --git a/lib/pages/user/modify/modify_user_information_page.dart b/lib/pages/user/modify/modify_user_information_page.dart index 8b1f734..5ccc0c4 100644 --- a/lib/pages/user/modify/modify_user_information_page.dart +++ b/lib/pages/user/modify/modify_user_information_page.dart @@ -115,6 +115,7 @@ class ModifyUserInformationPage extends StatelessWidget { Widget _buildTextFieldWidget(BuildContext context) { var userBloc = context.read(); var user = UserUtil.getUser()!; + userBloc.tempGender = user.gender ?? 0; Log.d('user = $user'); if (type == ModifyUserInformationType.gender) { return Row( @@ -133,16 +134,19 @@ class ModifyUserInformationPage extends StatelessWidget { activeColor: const Color(0xFF0E89BA), value: 0, //selected: user.gender == 0, - groupValue: user.gender, + groupValue: userBloc.tempGender, onChanged: (value) { Log.d('男value = $value'); - user.gender = value as int; + if (value != null) { + userBloc.tempGender = value; + } + userBloc.add(UserUIUpdate(type)); }, ), ), SizedBox( width: 100.w, - child: RadioListTile( + child: RadioListTile( //selected: user.gender == 1, title: Text( '女', @@ -154,10 +158,13 @@ class ModifyUserInformationPage extends StatelessWidget { ), activeColor: const Color(0xFF0E89BA), value: 1, - groupValue: user.gender, - onChanged: (value) { + groupValue: userBloc.tempGender, + onChanged: (int? value) { Log.d('女value = $value'); - user.gender = value as int; + if (value != null) { + userBloc.tempGender = value; + } + userBloc.add(UserUIUpdate(type)); }, ), ),