diff --git a/avatar_maker/lib/src/avatar/avatar_maker_avatar.dart b/avatar_maker/lib/src/avatar/avatar_maker_avatar.dart index 75787e1..0e8b4f4 100644 --- a/avatar_maker/lib/src/avatar/avatar_maker_avatar.dart +++ b/avatar_maker/lib/src/avatar/avatar_maker_avatar.dart @@ -3,6 +3,8 @@ import "package:avatar_maker/src/core/models/customized_property_category.dart"; import "package:flutter/material.dart"; import "package:flutter_svg/flutter_svg.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. /// @@ -50,8 +52,10 @@ class AvatarMakerAvatar extends StatelessWidget { return loader; } return SvgPicture.string( - avatarController.drawAvatarSVG(), + avatarController.displayedAvatarSVG, height: radius * 1.6, + // Reuse the raster while the fixed-size preview scrolls. + renderingStrategy: RenderingStrategy.raster, semanticsLabel: "Your avatar", placeholderBuilder: (context) => Center( child: loader, diff --git a/avatar_maker/lib/src/customizer/widgets/customizer_body.dart b/avatar_maker/lib/src/customizer/widgets/customizer_body.dart index ad68809..623d2f0 100644 --- a/avatar_maker/lib/src/customizer/widgets/customizer_body.dart +++ b/avatar_maker/lib/src/customizer/widgets/customizer_body.dart @@ -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:flutter/material.dart"; import "package:flutter_svg/flutter_svg.dart"; +import "package:vector_graphics/vector_graphics_compat.dart" + show RenderingStrategy; class CustomizerBody extends StatelessWidget { final AvatarMakerController avatarMakerController; @@ -84,6 +86,8 @@ class CustomizerBody extends StatelessWidget { avatarMakerController.getComponentSVG( propertyCategory.id, index), height: 80, + // Avoid replaying SVG paths on every scroll frame. + renderingStrategy: RenderingStrategy.raster, semanticsLabel: 'Your AvatarMaker', placeholderBuilder: (context) => Center( child: CircularProgressIndicator.adaptive(), diff --git a/avatar_maker/pubspec.yaml b/avatar_maker/pubspec.yaml index c1c48dd..bf64765 100644 --- a/avatar_maker/pubspec.yaml +++ b/avatar_maker/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: material_symbols_icons: ^4.2874.0 provider: ^6.1.5 shared_preferences: ^2.5.3 + vector_graphics: ^1.1.19 dev_dependencies: analyzer: ^8.1.1 build_runner: ^2.10.1