import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wow_english/common/core/user_util.dart'; import 'package:wow_english/common/request/dao/user_dao.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/pages/user/modify/modify_user_information_page.dart'; import 'package:wow_english/utils/log_util.dart'; part 'user_event.dart'; part 'user_state.dart'; class UserBloc extends Bloc { final TextEditingController modifyTextController = TextEditingController(); UserBloc() : super(UserInitial()) { on(_logout); on(_updateUser); } void _logout(UserLogout event, Emitter emitter) async { await UserDao.logout(); } void _updateUser(UserUpdate event, Emitter emitter) async { Log.d('_updateUser, event: ${event.type}, emitter.isDone: ${emitter.isDone}, text=${modifyTextController.text}'); UserEntity user = UserUtil.getUser()!; switch (event.type) { case ModifyUserInformationType.avatar: break; case ModifyUserInformationType.name: String name = modifyTextController.text; try { await UserDao.updateUserInfoField(name: name); // 修改成功,更新本地缓存及UI user.name = name; emitter(UserInfoUpdated()); } catch (e) { Log.e('_updateUser name, e: $e'); } break; case ModifyUserInformationType.age: // todo 校验格式 int age = modifyTextController.text as int; try { await UserDao.updateUserInfoField(age: age); // 修改成功,更新本地缓存及UI user.age = age; emitter(UserInfoUpdated()); } catch (e) { Log.e('_updateUser age, e: $e'); } break; case ModifyUserInformationType.gender: try { await UserDao.updateUserInfoField(gender: user.gender); emitter(UserInfoUpdated()); } catch (e) { Log.e('_updateUser age, e: $e'); } break; } } }