fix performance issues

This commit is contained in:
otsmr 2026-10-09 17:41:45 +02:00
parent faaab2bd0d
commit adf4fe0ca5
3 changed files with 10 additions and 1 deletions

View file

@ -3,6 +3,8 @@ import "package:avatar_maker/src/core/models/customized_property_category.dart";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_svg/flutter_svg.dart"; import "package:flutter_svg/flutter_svg.dart";
import "package:provider/provider.dart"; import "package:provider/provider.dart";
import "package:vector_graphics/vector_graphics_compat.dart"
show RenderingStrategy;
/// This widget renders the avatar of the user on screen. /// This widget renders the avatar of the user on screen.
/// ///
@ -50,8 +52,10 @@ class AvatarMakerAvatar extends StatelessWidget {
return loader; return loader;
} }
return SvgPicture.string( return SvgPicture.string(
avatarController.drawAvatarSVG(), avatarController.displayedAvatarSVG,
height: radius * 1.6, height: radius * 1.6,
// Reuse the raster while the fixed-size preview scrolls.
renderingStrategy: RenderingStrategy.raster,
semanticsLabel: "Your avatar", semanticsLabel: "Your avatar",
placeholderBuilder: (context) => Center( placeholderBuilder: (context) => Center(
child: loader, child: loader,

View file

@ -3,6 +3,8 @@ import "package:avatar_maker/src/customizer/widgets/customizer_appbar.dart";
import "package:avatar_maker/src/customizer/widgets/customizer_bottom_navbar.dart"; import "package:avatar_maker/src/customizer/widgets/customizer_bottom_navbar.dart";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_svg/flutter_svg.dart"; import "package:flutter_svg/flutter_svg.dart";
import "package:vector_graphics/vector_graphics_compat.dart"
show RenderingStrategy;
class CustomizerBody extends StatelessWidget { class CustomizerBody extends StatelessWidget {
final AvatarMakerController avatarMakerController; final AvatarMakerController avatarMakerController;
@ -84,6 +86,8 @@ class CustomizerBody extends StatelessWidget {
avatarMakerController.getComponentSVG( avatarMakerController.getComponentSVG(
propertyCategory.id, index), propertyCategory.id, index),
height: 80, height: 80,
// Avoid replaying SVG paths on every scroll frame.
renderingStrategy: RenderingStrategy.raster,
semanticsLabel: 'Your AvatarMaker', semanticsLabel: 'Your AvatarMaker',
placeholderBuilder: (context) => Center( placeholderBuilder: (context) => Center(
child: CircularProgressIndicator.adaptive(), child: CircularProgressIndicator.adaptive(),

View file

@ -19,6 +19,7 @@ dependencies:
material_symbols_icons: ^4.2874.0 material_symbols_icons: ^4.2874.0
provider: ^6.1.5 provider: ^6.1.5
shared_preferences: ^2.5.3 shared_preferences: ^2.5.3
vector_graphics: ^1.1.19
dev_dependencies: dev_dependencies:
analyzer: ^8.1.1 analyzer: ^8.1.1
build_runner: ^2.10.1 build_runner: ^2.10.1