fix avatar_maker update

This commit is contained in:
otsmr 2025-07-12 01:42:46 +02:00
parent 3cab405ec3
commit e13712459a
2 changed files with 37 additions and 22 deletions

View file

@ -4,12 +4,24 @@ import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:twonly/src/services/api/messages.dart'; import 'package:twonly/src/services/api/messages.dart';
import 'package:twonly/src/utils/misc.dart'; import 'package:twonly/src/utils/misc.dart';
import "package:get/get.dart";
import 'package:twonly/src/utils/storage.dart'; import 'package:twonly/src/utils/storage.dart';
class ModifyAvatar extends StatelessWidget { class ModifyAvatar extends StatefulWidget {
const ModifyAvatar({super.key}); const ModifyAvatar({super.key});
@override
State<ModifyAvatar> createState() => _ModifyAvatarState();
}
class _ModifyAvatarState extends State<ModifyAvatar> {
final AvatarMakerController _avatarMakerController =
PersistentAvatarMakerController(customizedPropertyCategories: []);
@override
void initState() {
super.initState();
}
Future updateUserAvatar(String json, String svg) async { Future updateUserAvatar(String json, String svg) async {
await updateUserdata((user) { await updateUserdata((user) {
user.avatarJson = json; user.avatarJson = json;
@ -80,6 +92,7 @@ class ModifyAvatar extends StatelessWidget {
child: AvatarMakerAvatar( child: AvatarMakerAvatar(
radius: 130, radius: 130,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
controller: _avatarMakerController,
), ),
), ),
SizedBox( SizedBox(
@ -89,11 +102,10 @@ class ModifyAvatar extends StatelessWidget {
IconButton( IconButton(
icon: FaIcon(FontAwesomeIcons.floppyDisk), icon: FaIcon(FontAwesomeIcons.floppyDisk),
onPressed: () async { onPressed: () async {
final avatarMakerController = await _avatarMakerController.saveAvatarSVG();
Get.find<AvatarMakerController>(); final json =
await avatarMakerController.saveAvatarSVG(); _avatarMakerController.getJsonOptionsSync();
final json = avatarMakerController.getJsonOptionsSync(); final svg = _avatarMakerController.getAvatarSVGSync();
final svg = avatarMakerController.getAvatarSVGSync();
await updateUserAvatar(json, svg); await updateUserAvatar(json, svg);
if (context.mounted) { if (context.mounted) {
Navigator.pop(context); Navigator.pop(context);
@ -103,17 +115,13 @@ class ModifyAvatar extends StatelessWidget {
IconButton( IconButton(
icon: FaIcon(FontAwesomeIcons.shuffle), icon: FaIcon(FontAwesomeIcons.shuffle),
onPressed: () { onPressed: () {
final avatarmakerController = _avatarMakerController.randomizedSelectedOptions();
Get.find<AvatarMakerController>();
avatarmakerController.randomizedSelectedOptions();
}, },
), ),
IconButton( IconButton(
icon: Icon(FontAwesomeIcons.rotateLeft), icon: Icon(FontAwesomeIcons.rotateLeft),
onPressed: () { onPressed: () {
final avatarMakerController = _avatarMakerController.restoreState();
Get.find<AvatarMakerController>();
avatarMakerController.restoreState();
}, },
), ),
], ],
@ -127,6 +135,7 @@ class ModifyAvatar extends StatelessWidget {
min(600, MediaQuery.of(context).size.width * 0.85), min(600, MediaQuery.of(context).size.width * 0.85),
autosave: false, autosave: false,
theme: getAvatarMakerTheme(context), theme: getAvatarMakerTheme(context),
controller: _avatarMakerController,
), ),
), ),
], ],

View file

@ -17,6 +17,8 @@ class ProfileView extends StatefulWidget {
class _ProfileViewState extends State<ProfileView> { class _ProfileViewState extends State<ProfileView> {
UserData? user; UserData? user;
final AvatarMakerController _avatarMakerController =
PersistentAvatarMakerController(customizedPropertyCategories: []);
@override @override
void initState() { void initState() {
@ -53,6 +55,7 @@ class _ProfileViewState extends State<ProfileView> {
AvatarMakerAvatar( AvatarMakerAvatar(
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
radius: 80, radius: 80,
controller: _avatarMakerController,
), ),
SizedBox(height: 10), SizedBox(height: 10),
Center( Center(
@ -61,13 +64,16 @@ class _ProfileViewState extends State<ProfileView> {
child: ElevatedButton.icon( child: ElevatedButton.icon(
icon: Icon(Icons.edit), icon: Icon(Icons.edit),
label: Text(context.lang.settingsProfileCustomizeAvatar), label: Text(context.lang.settingsProfileCustomizeAvatar),
onPressed: () => Navigator.push( onPressed: () async {
await Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ModifyAvatar(), builder: (context) => ModifyAvatar(),
), ),
), );
), _avatarMakerController.performRestore();
setState(() {});
}),
), ),
), ),
SizedBox(height: 20), SizedBox(height: 20),