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