Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
flutter_screenutil
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Mounir Bouaiche
2023-06-11 22:24:57 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
dcdde7ed18b2b78911de5831ba4c0d2f715379e5
dcdde7ed
1 parent
480205ca
Add ensureScreenSize to ScreenUtilInit constructor
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
11 deletions
example/lib/src/first_method.dart
lib/src/screenutil_init.dart
example/lib/src/first_method.dart
View file @
dcdde7e
...
...
@@ -12,6 +12,7 @@ class MyApp extends StatelessWidget {
// In first method you only need to wrap [MaterialApp] with [ScreenUtilInit] and that's it
return
ScreenUtilInit
(
responsiveWidgets:
responsiveWidgets
,
ensureScreenSize:
true
,
child:
MaterialApp
(
debugShowCheckedModeBanner:
false
,
title:
'First Method'
,
...
...
lib/src/screenutil_init.dart
View file @
dcdde7e
import
'dart:async'
;
import
'dart:collection'
;
import
'package:flutter/widgets.dart'
;
...
...
@@ -99,12 +100,14 @@ class _ScreenUtilInitState extends State<ScreenUtilInit>
final
_canMarkedToBuild
=
HashSet
<
String
>();
MediaQueryData
?
_mediaQueryData
;
final
_binding
=
WidgetsBinding
.
instance
;
final
_screenSizeCompleter
=
Completer
<
void
>();
@override
void
initState
()
{
if
(
widget
.
responsiveWidgets
!=
null
)
{
_canMarkedToBuild
.
addAll
(
widget
.
responsiveWidgets
!);
}
_validateSize
().
then
(
_screenSizeCompleter
.
complete
);
super
.
initState
();
_binding
.
addObserver
(
this
);
...
...
@@ -129,6 +132,10 @@ class _ScreenUtilInitState extends State<ScreenUtilInit>
return
mq
;
}
Future
<
void
>
_validateSize
()
async
{
if
(
widget
.
ensureScreenSize
??
false
)
return
ScreenUtil
.
ensureScreenSize
();
}
void
_markNeedsBuildIfAllowed
(
Element
el
)
{
final
widgetName
=
el
.
widget
.
runtimeType
.
toString
();
final
allowed
=
widget
is
SU
||
...
...
@@ -162,18 +169,26 @@ class _ScreenUtilInitState extends State<ScreenUtilInit>
Widget
build
(
BuildContext
context
)
{
final
mq
=
_mediaQueryData
;
if
(
mq
==
null
)
return
SizedBox
.
shrink
();
ScreenUtil
.
configure
(
data:
mq
,
designSize:
widget
.
designSize
,
splitScreenMode:
widget
.
splitScreenMode
,
minTextAdapt:
widget
.
minTextAdapt
,
ensureScreenHasSize:
widget
.
ensureScreenSize
,
fontSizeResolver:
widget
.
fontSizeResolver
,
if
(
mq
==
null
)
return
const
SizedBox
.
shrink
();
return
FutureBuilder
<
void
>(
future:
_screenSizeCompleter
.
future
,
builder:
(
c
,
snapshot
)
{
ScreenUtil
.
configure
(
data:
mq
,
designSize:
widget
.
designSize
,
splitScreenMode:
widget
.
splitScreenMode
,
minTextAdapt:
widget
.
minTextAdapt
,
fontSizeResolver:
widget
.
fontSizeResolver
,
);
if
(
snapshot
.
connectionState
==
ConnectionState
.
done
)
{
return
widget
.
builder
?.
call
(
context
,
widget
.
child
)
??
widget
.
child
!;
}
return
const
SizedBox
.
shrink
();
},
);
return
widget
.
builder
?.
call
(
context
,
widget
.
child
)
??
widget
.
child
!;
}
@override
...
...
Please
register
or
login
to post a comment