Skip to content

Commit ecabf03

Browse files
fix: resolved conflicts
1 parent de1fa4f commit ecabf03

File tree

1 file changed

+64
-42
lines changed

1 file changed

+64
-42
lines changed

lib/view/homescreen.dart

Lines changed: 64 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -33,34 +33,73 @@ class HomeScreen extends StatefulWidget {
3333
}
3434

3535
class _HomeScreenState extends State<HomeScreen>
36-
with TickerProviderStateMixin, AutomaticKeepAliveClientMixin {
36+
with
37+
TickerProviderStateMixin,
38+
AutomaticKeepAliveClientMixin,
39+
WidgetsBindingObserver {
3740
late final TabController _tabController;
38-
AnimationBadgeProvider animationProvider = AnimationBadgeProvider();
3941
late SpeedDialProvider speedDialProvider;
40-
BadgeMessageProvider badgeData = BadgeMessageProvider();
41-
ImageUtils imageUtils = ImageUtils();
42-
InlineImageProvider inlineImageProvider =
42+
final AnimationBadgeProvider animationProvider = AnimationBadgeProvider();
43+
final BadgeMessageProvider badgeData = BadgeMessageProvider();
44+
final ImageUtils imageUtils = ImageUtils();
45+
final InlineImageProvider inlineImageProvider =
4346
GetIt.instance<InlineImageProvider>();
44-
bool isPrefixIconClicked = false;
45-
int textfieldLength = 0;
46-
String previousText = '';
4747
final TextEditingController inlineimagecontroller =
4848
GetIt.instance.get<InlineImageProvider>().getController();
49+
50+
bool isPrefixIconClicked = false;
4951
bool isDialInteracting = false;
50-
String errorVal = "";
52+
String previousText = '';
53+
String _cachedText = '';
5154

5255
@override
5356
void initState() {
57+
WidgetsBinding.instance.addObserver(this);
5458
inlineimagecontroller.addListener(handleTextChange);
5559
_setPortraitOrientation();
5660
WidgetsBinding.instance.addPostFrameCallback((_) {
5761
inlineImageProvider.setContext(context);
5862
});
5963
_startImageCaching();
6064
speedDialProvider = SpeedDialProvider(animationProvider);
65+
_tabController = TabController(length: 3, vsync: this);
6166
super.initState();
67+
}
6268

63-
_tabController = TabController(length: 3, vsync: this);
69+
@override
70+
void dispose() {
71+
WidgetsBinding.instance.removeObserver(this);
72+
inlineimagecontroller.removeListener(handleTextChange);
73+
inlineimagecontroller.removeListener(_controllerListner);
74+
animationProvider.stopAnimation();
75+
_tabController.dispose();
76+
super.dispose();
77+
}
78+
79+
@override
80+
void didChangeAppLifecycleState(AppLifecycleState state) {
81+
if (state == AppLifecycleState.paused) {
82+
_cachedText = inlineimagecontroller.text;
83+
animationProvider.stopAnimation();
84+
} else if (state == AppLifecycleState.resumed) {
85+
if (inlineimagecontroller.text.trim().isEmpty &&
86+
_cachedText.trim().isNotEmpty) {
87+
inlineimagecontroller.text = _cachedText;
88+
}
89+
animationProvider.badgeAnimation(
90+
inlineimagecontroller.text,
91+
Converters(),
92+
animationProvider.isEffectActive(InvertLEDEffect()),
93+
);
94+
}
95+
}
96+
97+
void _controllerListner() {
98+
animationProvider.badgeAnimation(
99+
inlineImageProvider.getController().text,
100+
Converters(),
101+
animationProvider.isEffectActive(InvertLEDEffect()),
102+
);
64103
}
65104

66105
void handleTextChange() {
@@ -69,7 +108,6 @@ class _HomeScreenState extends State<HomeScreen>
69108

70109
if (previousText.length > currentText.length) {
71110
final deletionIndex = selection.baseOffset;
72-
73111
final regex = RegExp(r'<<\d+>>');
74112
final matches = regex.allMatches(previousText);
75113

@@ -94,20 +132,6 @@ class _HomeScreenState extends State<HomeScreen>
94132
}
95133
}
96134

97-
void _controllerListner() {
98-
animationProvider.badgeAnimation(inlineImageProvider.getController().text,
99-
Converters(), animationProvider.isEffectActive(InvertLEDEffect()));
100-
}
101-
102-
@override
103-
void dispose() {
104-
inlineimagecontroller.removeListener(handleTextChange);
105-
animationProvider.stopAnimation();
106-
inlineImageProvider.getController().removeListener(_controllerListner);
107-
_tabController.dispose();
108-
super.dispose();
109-
}
110-
111135
void _setPortraitOrientation() {
112136
SystemChrome.setPreferredOrientations([
113137
DeviceOrientation.portraitUp,
@@ -127,17 +151,15 @@ class _HomeScreenState extends State<HomeScreen>
127151
@override
128152
Widget build(BuildContext context) {
129153
super.build(context);
130-
InlineImageProvider inlineImageProvider =
131-
Provider.of<InlineImageProvider>(context);
132154

133155
return MultiProvider(
134156
providers: [
135157
ChangeNotifierProvider<AnimationBadgeProvider>(
136-
create: (context) => animationProvider,
158+
create: (_) => animationProvider,
137159
),
138160
ChangeNotifierProvider<SpeedDialProvider>(
139-
create: (context) {
140-
inlineImageProvider.getController().addListener(_controllerListner);
161+
create: (_) {
162+
inlineimagecontroller.addListener(_controllerListner);
141163
return speedDialProvider;
142164
},
143165
),
@@ -280,18 +302,18 @@ class _HomeScreenState extends State<HomeScreen>
280302
child: GestureDetector(
281303
onTap: () {
282304
badgeData.checkAndTransfer(
283-
inlineimagecontroller.text,
284-
animationProvider.isEffectActive(FlashEffect()),
285-
animationProvider
286-
.isEffectActive(MarqueeEffect()),
287-
animationProvider
288-
.isEffectActive(InvertLEDEffect()),
289-
speedDialProvider.getOuterValue(),
290-
modeValueMap[
291-
animationProvider.getAnimationIndex()],
292-
null,
293-
false,
294-
context); //added context
305+
inlineimagecontroller.text,
306+
animationProvider.isEffectActive(FlashEffect()),
307+
animationProvider.isEffectActive(MarqueeEffect()),
308+
animationProvider
309+
.isEffectActive(InvertLEDEffect()),
310+
speedDialProvider.getOuterValue(),
311+
modeValueMap[
312+
animationProvider.getAnimationIndex()],
313+
null,
314+
false,
315+
context, // <== This is needed and now passed
316+
);
295317
},
296318
child: Container(
297319
padding: EdgeInsets.symmetric(

0 commit comments

Comments
 (0)