import 'package:flutter/material.dart'; import '/utils/app_dir.dart'; class UserAccount extends ChangeNotifier { String id = ''; String username = ''; String email = ''; void init(Map data) { id = data['id']!; username = data['username']!; email = data['email']!; } Map toMap() { return { 'id': id, 'username': username, 'email': email, }; } void updateUsername(String newUsername) { username = newUsername; } void updateEmail(String newEmail) { email = newEmail; } void clear() { id = ''; username = ''; email = ''; } } class UserProfile extends ChangeNotifier { String nickname = ''; String gender = ''; String birthday = ''; String location = ''; String status = ''; String sign = ''; String avatar = ''; String baseImageDir = ''; bool isInitialised = false; Future init(Map json) async { nickname = json['nickname'] ?? ''; birthday = json['birthday'] ?? ''; location = json['location'] ?? ''; status = json['status'] ?? ''; sign = json['sign'] ?? ''; avatar = json['avatar'] ?? ''; baseImageDir = await getChatImageDir(); gender = _genderEn2Cn(json['gender'] ?? ''); isInitialised = true; } Map toMap() { return { 'nickname': nickname, 'gender': gender, 'birthday': birthday, 'location': location, 'status': status, 'sign': sign, 'avatar': avatar, }; } Map toMapCn() { return { '签名': sign, '状态': status, '名字': nickname, '生日': birthday.isNotEmpty ? '${birthday.substring(0, 4)}年${birthday.substring(5, 7)}月${birthday.substring(8)}日' : '', '位置': location, '性别': gender, }; } void changeBasic( String newSign, String newStatus, String newNickname, String newBirthday, String newLocation, String newGender, ) { sign = newSign; status = newStatus; nickname = newNickname; birthday = newBirthday; location = newLocation; gender = newGender; } void changeAvatar(String newAvatar) async { avatar = newAvatar; } void clear() { nickname = ''; gender = ''; birthday = ''; location = ''; status = ''; sign = ''; avatar = ''; baseImageDir = ''; isInitialised = false; } String _genderEn2Cn(String newGender) { if (newGender.isEmpty) { return newGender; } else { return newGender == 'man' ? '男' : '女'; } } }