From e13712459a90428705fd7fb6b49ab497265e7f45 Mon Sep 17 00:00:00 2001 From: otsmr Date: Sat, 12 Jul 2025 01:42:46 +0200 Subject: [PATCH] fix avatar_maker update --- .../settings/profile/modify_avatar.view.dart | 35 ++++++++++++------- .../views/settings/profile/profile.view.dart | 24 ++++++++----- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/lib/src/views/settings/profile/modify_avatar.view.dart b/lib/src/views/settings/profile/modify_avatar.view.dart index 02112c7..55469e7 100644 --- a/lib/src/views/settings/profile/modify_avatar.view.dart +++ b/lib/src/views/settings/profile/modify_avatar.view.dart @@ -4,12 +4,24 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:twonly/src/services/api/messages.dart'; import 'package:twonly/src/utils/misc.dart'; -import "package:get/get.dart"; import 'package:twonly/src/utils/storage.dart'; -class ModifyAvatar extends StatelessWidget { +class ModifyAvatar extends StatefulWidget { const ModifyAvatar({super.key}); + @override + State createState() => _ModifyAvatarState(); +} + +class _ModifyAvatarState extends State { + final AvatarMakerController _avatarMakerController = + PersistentAvatarMakerController(customizedPropertyCategories: []); + + @override + void initState() { + super.initState(); + } + Future updateUserAvatar(String json, String svg) async { await updateUserdata((user) { user.avatarJson = json; @@ -80,6 +92,7 @@ class ModifyAvatar extends StatelessWidget { child: AvatarMakerAvatar( radius: 130, backgroundColor: Colors.transparent, + controller: _avatarMakerController, ), ), SizedBox( @@ -89,11 +102,10 @@ class ModifyAvatar extends StatelessWidget { IconButton( icon: FaIcon(FontAwesomeIcons.floppyDisk), onPressed: () async { - final avatarMakerController = - Get.find(); - await avatarMakerController.saveAvatarSVG(); - final json = avatarMakerController.getJsonOptionsSync(); - final svg = avatarMakerController.getAvatarSVGSync(); + await _avatarMakerController.saveAvatarSVG(); + final json = + _avatarMakerController.getJsonOptionsSync(); + final svg = _avatarMakerController.getAvatarSVGSync(); await updateUserAvatar(json, svg); if (context.mounted) { Navigator.pop(context); @@ -103,17 +115,13 @@ class ModifyAvatar extends StatelessWidget { IconButton( icon: FaIcon(FontAwesomeIcons.shuffle), onPressed: () { - final avatarmakerController = - Get.find(); - avatarmakerController.randomizedSelectedOptions(); + _avatarMakerController.randomizedSelectedOptions(); }, ), IconButton( icon: Icon(FontAwesomeIcons.rotateLeft), onPressed: () { - final avatarMakerController = - Get.find(); - avatarMakerController.restoreState(); + _avatarMakerController.restoreState(); }, ), ], @@ -127,6 +135,7 @@ class ModifyAvatar extends StatelessWidget { min(600, MediaQuery.of(context).size.width * 0.85), autosave: false, theme: getAvatarMakerTheme(context), + controller: _avatarMakerController, ), ), ], diff --git a/lib/src/views/settings/profile/profile.view.dart b/lib/src/views/settings/profile/profile.view.dart index 7aaa238..24c5d5a 100644 --- a/lib/src/views/settings/profile/profile.view.dart +++ b/lib/src/views/settings/profile/profile.view.dart @@ -17,6 +17,8 @@ class ProfileView extends StatefulWidget { class _ProfileViewState extends State { UserData? user; + final AvatarMakerController _avatarMakerController = + PersistentAvatarMakerController(customizedPropertyCategories: []); @override void initState() { @@ -53,21 +55,25 @@ class _ProfileViewState extends State { AvatarMakerAvatar( backgroundColor: Colors.transparent, radius: 80, + controller: _avatarMakerController, ), SizedBox(height: 10), Center( child: SizedBox( height: 35, child: ElevatedButton.icon( - icon: Icon(Icons.edit), - label: Text(context.lang.settingsProfileCustomizeAvatar), - onPressed: () => Navigator.push( - context, - MaterialPageRoute( - builder: (context) => ModifyAvatar(), - ), - ), - ), + icon: Icon(Icons.edit), + label: Text(context.lang.settingsProfileCustomizeAvatar), + onPressed: () async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ModifyAvatar(), + ), + ); + _avatarMakerController.performRestore(); + setState(() {}); + }), ), ), SizedBox(height: 20),