| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- import 'package:get/get.dart';
- import 'package:injectable/injectable.dart';
- import 'package:keyboard/base/base_controller.dart';
- import 'package:keyboard/data/bean/default_avatar_info.dart';
- import 'package:keyboard/data/bean/keyboard_info.dart';
- import 'package:keyboard/module/change/gender/change_gender_page.dart';
- import 'package:keyboard/utils/atmob_log.dart';
- import '../../../data/repository/config_repository.dart';
- import '../../change/birthday/change_birthday_page.dart';
- import '../../change/nickname/change_nickname_page.dart';
- enum ProfileEditMode {
- add, // 新增
- edit, // 编辑
- }
- @injectable
- class ProfileEditController extends BaseController {
- final tag = "ProfileEditController";
- final ConfigRepository configRepository;
- final RxnInt _currentGender = RxnInt(null);
- final RxString _avatarUrl = "".obs;
- String get avatarUrl => _avatarUrl.value;
- Rxn<DefaultAvatarInfo> get currentDefaultAvatarInfo =>
- configRepository.defaultAvatarInfo;
- late final ProfileEditMode mode;
- final Rx<KeyboardInfo> _currentCustomKeyboardInfo = KeyboardInfo().obs;
- Rx<KeyboardInfo> get currentCustomKeyboardInfo => _currentCustomKeyboardInfo;
- final RxnString _currentBirthday = RxnString(null);
- String? get currentBirthday => _currentBirthday.value;
- // 当前昵称
- final RxnString _currentNickname = RxnString(null);
- String? get currentNickname => _currentNickname.value;
- // 当前自定义键盘亲密度
- final RxInt _currentCustomIntimacy = 30.obs;
- int get currentCustomIntimacy => _currentCustomIntimacy.value;
- // 当前定制亲密度是否有变化
- final RxBool _customIntimacyChanged = false.obs;
- bool get customIntimacyChanged => _customIntimacyChanged.value;
- final RxList<String> _boyAvatars = <String>[].obs;
- final RxList<String> _girlAvatars = <String>[].obs;
- ProfileEditController(this.configRepository);
- @override
- void onInit() {
- super.onInit();
- final KeyboardInfo? keyboardInfo = Get.arguments?["keyboardInfo"];
- if (keyboardInfo != null) {
- mode = ProfileEditMode.edit;
- _currentCustomKeyboardInfo.value = keyboardInfo;
- _currentNickname.value = keyboardInfo.name;
- _currentGender.value = keyboardInfo.gender;
- _currentCustomIntimacy.value = keyboardInfo.intimacy ?? 30;
- _avatarUrl.value = keyboardInfo.avatar ?? "";
- } else {
- mode = ProfileEditMode.add;
- _currentGender.value = null;
- _currentCustomIntimacy.value = 30;
- _avatarUrl.value = "";
- }
- ever<DefaultAvatarInfo?>(currentDefaultAvatarInfo, (info) {
- updateAvatarListsAndSelectFirst(info);
- });
- }
- @override
- void onReady() {
- super.onReady();
- updateAvatarListsAndSelectFirst(currentDefaultAvatarInfo.value);
- }
- void updateAvatarListsAndSelectFirst(DefaultAvatarInfo? info) {
- _boyAvatars.assignAll(info?.maleAvatars ?? []);
- _girlAvatars.assignAll(info?.femaleAvatars ?? []);
- if (_currentGender.value == 1 && _boyAvatars.isNotEmpty) {
- _avatarUrl.value = _boyAvatars[0];
- } else if (_girlAvatars.isNotEmpty) {
- _avatarUrl.value = _girlAvatars[0];
- }
- }
- clickSaveButton() {
- AtmobLog.d(tag, 'clickSaveButton');
- }
- void nextAvatar() {
- List<String> avatars =
- _currentGender.value == 1 ? _boyAvatars : _girlAvatars;
- if (avatars.isEmpty) return;
- int currentIndex = avatars.indexOf(_avatarUrl.value);
- _avatarUrl.value = avatars[(currentIndex + 1) % avatars.length];
- AtmobLog.d(tag, 'nextAvatar: ${_avatarUrl.value}');
- }
- // 更新亲密度
- void updateIntimacy(int intimacy) {
- _currentCustomIntimacy.value = intimacy;
- }
- clickBack() {
- AtmobLog.d(tag, 'clickBackButton');
- Get.back();
- }
- void clickNickname() async {
- AtmobLog.d(tag, 'clickNickname');
- final result = await ChangeNicknamePage.start(
- nickName: _currentNickname.value,
- );
- if (result != null) {
- _currentNickname.value = result;
- }
- }
- void clickGender() async {
- AtmobLog.d(tag, 'clickGender');
- final result = await ChangeGenderPage.start();
- if (result != null) {
- _currentGender.value = result;
- }
- }
- void clickBirthday() async {
- AtmobLog.d(tag, 'clickBirthday');
- final result = await ChangeBirthdayPage.start(
- birthday: _currentBirthday.value,
- );
- if (result != null) {
- AtmobLog.d(tag, 'clickBirthday result: $result');
- _currentBirthday.value = result;
- }
- }
- String get genderText {
- if (_currentGender.value == 1) return '男';
- if (_currentGender.value == 2) return '女';
- return '请选择';
- }
- }
|