@@ -10,6 +10,7 @@ import 'package:badgemagic/bademagic_module/models/messages.dart';
1010import 'package:badgemagic/bademagic_module/models/mode.dart' ;
1111import 'package:badgemagic/bademagic_module/models/speed.dart' ;
1212import 'package:badgemagic/providers/BadgeScanProvider.dart' ;
13+ import 'package:badgemagic/providers/animation_badge_provider.dart' ;
1314import 'package:badgemagic/providers/imageprovider.dart' ;
1415import 'package:badgemagic/services/localization_service.dart' ;
1516import 'package:flutter/material.dart' ;
@@ -70,20 +71,25 @@ class BadgeMessageProvider {
7071 return data;
7172 }
7273
73- Future <Data > generateData (
74- String ? text,
75- bool ? flash,
76- bool ? marq,
77- bool ? inverted,
78- Speed ? speed,
79- Mode ? mode,
80- Map <String , dynamic >? jsonData) async {
74+ Future <Data > generateData (String ? text, bool ? flash, bool ? marq,
75+ bool ? inverted, Speed ? speed, Mode ? mode, Map <String , dynamic >? jsonData,
76+ {List <String >? clipartHex}) async {
8177 if (jsonData != null ) {
8278 return fileHelper.jsonToData (jsonData);
83- } else {
84- return getBadgeData (text ?? '' , flash ?? false , marq ?? false ,
85- speed ?? Speed .one, mode ?? Mode .left, inverted ?? false );
8679 }
80+ if (clipartHex != null && clipartHex.isNotEmpty) {
81+ return Data (messages: [
82+ Message (
83+ text: clipartHex,
84+ flash: flash ?? false ,
85+ marquee: marq ?? false ,
86+ speed: speed ?? Speed .one,
87+ mode: mode ?? Mode .picture,
88+ )
89+ ]);
90+ }
91+ return getBadgeData (text ?? '' , flash ?? false , marq ?? false ,
92+ speed ?? Speed .one, mode ?? Mode .left, inverted ?? false );
8793 }
8894
8995 Future <void > transferData (
@@ -129,11 +135,9 @@ class BadgeMessageProvider {
129135 }
130136
131137 if (controllerData.getController ().text.isEmpty && isSavedBadge == false ) {
132- // Allow empty text if Pacman or Fireworks mode is selected
133- // Fireworks: Mode.fixed and animation index 19
138+ // Allow empty text if Pacman, Fireworks, or Picture mode with saved clipart
134139 bool isFireworks = false ;
135140 try {
136- // Try to get animation index from modeValueMap
137141 int fireworksIndex = 19 ;
138142 int cycleIndex = 20 ;
139143 if (mode == Mode .fixed &&
@@ -145,7 +149,12 @@ class BadgeMessageProvider {
145149 modeValueMap.containsKey (cycleIndex) &&
146150 modeValueMap[cycleIndex] == Mode .cycle) {}
147151 } catch (_) {}
148- if (mode != Mode .pacman && ! isFireworks) {
152+ final hasClipart = (mode == Mode .picture || mode == Mode .fixed) &&
153+ Provider .of <AnimationBadgeProvider >(context, listen: false )
154+ .getClipartHex ()
155+ ? .isNotEmpty ==
156+ true ;
157+ if (mode != Mode .pacman && ! isFireworks && ! hasClipart) {
149158 final l10n = GetIt .instance.get <LocalizationService >().l10n;
150159 ToastUtils ().showErrorToast (l10n.pleaseEnterMessage);
151160 return ;
@@ -222,8 +231,16 @@ class BadgeMessageProvider {
222231 data = Data (messages: [newMessage, ...data.messages.skip (1 )]);
223232 }
224233 } else {
234+ List <String >? clipartHex;
235+ if (text? .isEmpty == true &&
236+ (mode == Mode .picture || mode == Mode .fixed)) {
237+ final aniProvider =
238+ Provider .of <AnimationBadgeProvider >(context, listen: false );
239+ clipartHex = aniProvider.getClipartHex ();
240+ }
225241 data = await generateData (
226- text, flash, marq, isInverted, speedMap[speed], mode, jsonData);
242+ text, flash, marq, isInverted, speedMap[speed], mode, jsonData,
243+ clipartHex: clipartHex);
227244 }
228245
229246 DataTransferManager manager = DataTransferManager (data);
0 commit comments