@@ -38,20 +38,21 @@ class _HomeScreenState extends State<HomeScreen>
3838 AutomaticKeepAliveClientMixin ,
3939 WidgetsBindingObserver {
4040 late final TabController _tabController;
41- AnimationBadgeProvider animationProvider = AnimationBadgeProvider ();
4241 late SpeedDialProvider speedDialProvider;
43- BadgeMessageProvider badgeData = BadgeMessageProvider ();
44- ImageUtils imageUtils = ImageUtils ();
45- InlineImageProvider inlineImageProvider =
42+ final AnimationBadgeProvider animationProvider = AnimationBadgeProvider ();
43+ final BadgeMessageProvider badgeData = BadgeMessageProvider ();
44+ final ImageUtils imageUtils = ImageUtils ();
45+ final InlineImageProvider inlineImageProvider =
4646 GetIt .instance <InlineImageProvider >();
47- bool isPrefixIconClicked = false ;
48- int textfieldLength = 0 ;
49- String previousText = '' ;
5047 final TextEditingController inlineimagecontroller =
5148 GetIt .instance.get <InlineImageProvider >().getController ();
49+
50+ bool isPrefixIconClicked = false ;
5251 bool isDialInteracting = false ;
5352 String _cachedText = '' ;
5453 late ScreenSize _selectedSize;
54+ String previousText = '' ;
55+ String _cachedText = '' ; // <-- NEW: to cache text on pause
5556
5657 @override
5758 void initState () {
@@ -66,6 +67,8 @@ class _HomeScreenState extends State<HomeScreen>
6667 speedDialProvider = SpeedDialProvider (animationProvider);
6768 _tabController = TabController (length: 3 , vsync: this );
6869 _selectedSize = supportedScreenSizes.first;
70+ _selectedSize = supportedScreenSizes.first; // default value
71+ super .initState ();
6972 }
7073
7174 @override
@@ -95,6 +98,7 @@ class _HomeScreenState extends State<HomeScreen>
9598 InvertLEDEffect (),
9699 ),
97100 _selectedSize,
101+ animationProvider.isEffectActive (InvertLEDEffect ()),
98102 );
99103 }
100104 }
@@ -107,6 +111,8 @@ class _HomeScreenState extends State<HomeScreen>
107111 InvertLEDEffect (),
108112 ),
109113 _selectedSize,
114+
115+ animationProvider.isEffectActive (InvertLEDEffect ()),
110116 );
111117 }
112118
@@ -116,7 +122,6 @@ class _HomeScreenState extends State<HomeScreen>
116122
117123 if (previousText.length > currentText.length) {
118124 final deletionIndex = selection.baseOffset;
119-
120125 final regex = RegExp (r'<<\d+>>' );
121126 final matches = regex.allMatches (previousText);
122127
@@ -160,17 +165,15 @@ class _HomeScreenState extends State<HomeScreen>
160165 @override
161166 Widget build (BuildContext context) {
162167 super .build (context);
163- InlineImageProvider inlineImageProvider =
164- Provider .of <InlineImageProvider >(context);
165168
166169 return MultiProvider (
167170 providers: [
168171 ChangeNotifierProvider <AnimationBadgeProvider >(
169- create: (context ) => animationProvider,
172+ create: (_ ) => animationProvider,
170173 ),
171174 ChangeNotifierProvider <SpeedDialProvider >(
172- create: (context ) {
173- inlineImageProvider. getController () .addListener (_controllerListner);
175+ create: (_ ) {
176+ inlineimagecontroller .addListener (_controllerListner);
174177 return speedDialProvider;
175178 },
176179 ),
@@ -224,6 +227,7 @@ class _HomeScreenState extends State<HomeScreen>
224227 ],
225228 ),
226229 ),
230+ AnimationBadge (),
227231 Container (
228232 margin: EdgeInsets .all (15. w),
229233 child: Material (
@@ -343,6 +347,47 @@ class _HomeScreenState extends State<HomeScreen>
343347 child: const Text ('Save' ),
344348 ),
345349 ),
350+ ),
351+ AnimationTab (),
352+ EffectTab (),
353+ ],
354+ ),
355+ ),
356+ Row (
357+ mainAxisAlignment: MainAxisAlignment .center,
358+ children: [
359+ Container (
360+ padding: EdgeInsets .symmetric (vertical: 20. h),
361+ child: GestureDetector (
362+ onTap: () {
363+ if (inlineimagecontroller.text.trim ().isEmpty) {
364+ ToastUtils ()
365+ .showErrorToast ("Please enter a message" );
366+ return ;
367+ }
368+ showDialog (
369+ context: context,
370+ builder: (context) {
371+ return SaveBadgeDialog (
372+ speed: speedDialProvider,
373+ animationProvider: animationProvider,
374+ textController: inlineimagecontroller,
375+ isInverse: animationProvider
376+ .isEffectActive (InvertLEDEffect ()),
377+ );
378+ },
379+ );
380+ },
381+ child: Container (
382+ padding: EdgeInsets .symmetric (
383+ horizontal: 33. w, vertical: 8. h),
384+ decoration: BoxDecoration (
385+ borderRadius: BorderRadius .circular (2. r),
386+ color: mdGrey400,
387+ ),
388+ child: const Text ('Save' ),
389+ ),
390+ ),
346391 ),
347392 SizedBox (width: 100. w),
348393 Container (
@@ -360,13 +405,20 @@ class _HomeScreenState extends State<HomeScreen>
360405 animationProvider.isEffectActive (
361406 InvertLEDEffect (),
362407 ),
408+
409+ animationProvider.isEffectActive (FlashEffect ()),
410+ animationProvider.isEffectActive (MarqueeEffect ()),
411+ animationProvider
412+ .isEffectActive (InvertLEDEffect ()),
363413 speedDialProvider.getOuterValue (),
364414 modeValueMap[
365415 animationProvider.getAnimationIndex ()],
366416 null ,
367417 false ,
368418 _selectedSize.height,
369419 _selectedSize.width,
420+ _selectedSize.width, // <-- pass badge height
421+
370422 );
371423 },
372424 child: Container (
0 commit comments