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: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<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 {
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<AvatarMakerController>();
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>();
avatarmakerController.randomizedSelectedOptions();
_avatarMakerController.randomizedSelectedOptions();
},
),
IconButton(
icon: Icon(FontAwesomeIcons.rotateLeft),
onPressed: () {
final avatarMakerController =
Get.find<AvatarMakerController>();
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,
),
),
],

View file

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