Skip to content

Commit 179aa72

Browse files
Add ability to exclude widgets from from rebuild list
1 parent f9651f8 commit 179aa72

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

lib/src/screenutil_init.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class ScreenUtilInit extends StatefulWidget {
7575
this.useInheritedMediaQuery = false,
7676
this.ensureScreenSize = false,
7777
this.responsiveWidgets,
78+
this.excludeWidgets,
7879
this.fontSizeResolver = FontSizeResolvers.width,
7980
}) : super(key: key);
8081

@@ -90,6 +91,7 @@ class ScreenUtilInit extends StatefulWidget {
9091
/// The [Size] of the device in the design draft, in dp
9192
final Size designSize;
9293
final Iterable<String>? responsiveWidgets;
94+
final Iterable<String>? excludeWidgets;
9395

9496
@override
9597
State<ScreenUtilInit> createState() => _ScreenUtilInitState();
@@ -98,6 +100,7 @@ class ScreenUtilInit extends StatefulWidget {
98100
class _ScreenUtilInitState extends State<ScreenUtilInit>
99101
with WidgetsBindingObserver {
100102
final _canMarkedToBuild = HashSet<String>();
103+
final _excludedWidgets = HashSet<String>();
101104
MediaQueryData? _mediaQueryData;
102105
final _binding = WidgetsBinding.instance;
103106
final _screenSizeCompleter = Completer<void>();
@@ -137,6 +140,7 @@ class _ScreenUtilInitState extends State<ScreenUtilInit>
137140

138141
void _markNeedsBuildIfAllowed(Element el) {
139142
final widgetName = el.widget.runtimeType.toString();
143+
if (_excludedWidgets.contains(widgetName)) return;
140144
final allowed = widget is SU ||
141145
_canMarkedToBuild.contains(widgetName) ||
142146
!(widgetName.startsWith('_') || flutterWidgets.contains(widgetName));

0 commit comments

Comments
 (0)