Showing
2 changed files
with
18 additions
and
2 deletions
@@ -12,6 +12,7 @@ class MyApp extends StatelessWidget { | @@ -12,6 +12,7 @@ class MyApp extends StatelessWidget { | ||
12 | // In first method you only need to wrap [MaterialApp] with [ScreenUtilInit] and that's it | 12 | // In first method you only need to wrap [MaterialApp] with [ScreenUtilInit] and that's it |
13 | return ScreenUtilInit( | 13 | return ScreenUtilInit( |
14 | responsiveWidgets: responsiveWidgets, | 14 | responsiveWidgets: responsiveWidgets, |
15 | + ensureScreenSize: true, | ||
15 | child: MaterialApp( | 16 | child: MaterialApp( |
16 | debugShowCheckedModeBanner: false, | 17 | debugShowCheckedModeBanner: false, |
17 | title: 'First Method', | 18 | title: 'First Method', |
1 | +import 'dart:async'; | ||
1 | import 'dart:collection'; | 2 | import 'dart:collection'; |
2 | 3 | ||
3 | import 'package:flutter/widgets.dart'; | 4 | import 'package:flutter/widgets.dart'; |
@@ -99,12 +100,14 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -99,12 +100,14 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
99 | final _canMarkedToBuild = HashSet<String>(); | 100 | final _canMarkedToBuild = HashSet<String>(); |
100 | MediaQueryData? _mediaQueryData; | 101 | MediaQueryData? _mediaQueryData; |
101 | final _binding = WidgetsBinding.instance; | 102 | final _binding = WidgetsBinding.instance; |
103 | + final _screenSizeCompleter = Completer<void>(); | ||
102 | 104 | ||
103 | @override | 105 | @override |
104 | void initState() { | 106 | void initState() { |
105 | if (widget.responsiveWidgets != null) { | 107 | if (widget.responsiveWidgets != null) { |
106 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); | 108 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); |
107 | } | 109 | } |
110 | + _validateSize().then(_screenSizeCompleter.complete); | ||
108 | 111 | ||
109 | super.initState(); | 112 | super.initState(); |
110 | _binding.addObserver(this); | 113 | _binding.addObserver(this); |
@@ -129,6 +132,10 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -129,6 +132,10 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
129 | return mq; | 132 | return mq; |
130 | } | 133 | } |
131 | 134 | ||
135 | + Future<void> _validateSize() async { | ||
136 | + if (widget.ensureScreenSize ?? false) return ScreenUtil.ensureScreenSize(); | ||
137 | + } | ||
138 | + | ||
132 | void _markNeedsBuildIfAllowed(Element el) { | 139 | void _markNeedsBuildIfAllowed(Element el) { |
133 | final widgetName = el.widget.runtimeType.toString(); | 140 | final widgetName = el.widget.runtimeType.toString(); |
134 | final allowed = widget is SU || | 141 | final allowed = widget is SU || |
@@ -162,20 +169,28 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -162,20 +169,28 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
162 | Widget build(BuildContext context) { | 169 | Widget build(BuildContext context) { |
163 | final mq = _mediaQueryData; | 170 | final mq = _mediaQueryData; |
164 | 171 | ||
165 | - if (mq == null) return SizedBox.shrink(); | 172 | + if (mq == null) return const SizedBox.shrink(); |
166 | 173 | ||
174 | + return FutureBuilder<void>( | ||
175 | + future: _screenSizeCompleter.future, | ||
176 | + builder: (c, snapshot) { | ||
167 | ScreenUtil.configure( | 177 | ScreenUtil.configure( |
168 | data: mq, | 178 | data: mq, |
169 | designSize: widget.designSize, | 179 | designSize: widget.designSize, |
170 | splitScreenMode: widget.splitScreenMode, | 180 | splitScreenMode: widget.splitScreenMode, |
171 | minTextAdapt: widget.minTextAdapt, | 181 | minTextAdapt: widget.minTextAdapt, |
172 | - ensureScreenHasSize: widget.ensureScreenSize, | ||
173 | fontSizeResolver: widget.fontSizeResolver, | 182 | fontSizeResolver: widget.fontSizeResolver, |
174 | ); | 183 | ); |
175 | 184 | ||
185 | + if (snapshot.connectionState == ConnectionState.done) { | ||
176 | return widget.builder?.call(context, widget.child) ?? widget.child!; | 186 | return widget.builder?.call(context, widget.child) ?? widget.child!; |
177 | } | 187 | } |
178 | 188 | ||
189 | + return const SizedBox.shrink(); | ||
190 | + }, | ||
191 | + ); | ||
192 | + } | ||
193 | + | ||
179 | @override | 194 | @override |
180 | void dispose() { | 195 | void dispose() { |
181 | _binding.removeObserver(this); | 196 | _binding.removeObserver(this); |
-
Please register or login to post a comment