Showing
1 changed file
with
14 additions
and
9 deletions
1 | +import 'dart:collection'; | ||
2 | + | ||
1 | import 'package:flutter/widgets.dart'; | 3 | import 'package:flutter/widgets.dart'; |
4 | +import './_flutter_widgets.dart'; | ||
2 | 5 | ||
3 | import 'screenutil_mixin.dart'; | 6 | import 'screenutil_mixin.dart'; |
4 | import 'screen_util.dart'; | 7 | import 'screen_util.dart'; |
@@ -67,13 +70,16 @@ class ScreenUtilInit extends StatefulWidget { | @@ -67,13 +70,16 @@ class ScreenUtilInit extends StatefulWidget { | ||
67 | 70 | ||
68 | class _ScreenUtilInitState extends State<ScreenUtilInit> | 71 | class _ScreenUtilInitState extends State<ScreenUtilInit> |
69 | with WidgetsBindingObserver { | 72 | with WidgetsBindingObserver { |
70 | - late final Iterable<String>? _canMarkedToBuild; | 73 | + final _canMarkedToBuild = HashSet<String>(); |
71 | MediaQueryData? _mediaQueryData; | 74 | MediaQueryData? _mediaQueryData; |
72 | - final WidgetsBinding _binding = WidgetsBinding.instance; | 75 | + final _binding = WidgetsBinding.instance; |
73 | 76 | ||
74 | @override | 77 | @override |
75 | void initState() { | 78 | void initState() { |
76 | - _canMarkedToBuild = widget.responsiveWidgets; | 79 | + if (widget.responsiveWidgets != null) { |
80 | + _canMarkedToBuild.addAll(widget.responsiveWidgets!); | ||
81 | + } | ||
82 | + | ||
77 | super.initState(); | 83 | super.initState(); |
78 | _binding.addObserver(this); | 84 | _binding.addObserver(this); |
79 | } | 85 | } |
@@ -98,13 +104,12 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -98,13 +104,12 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
98 | } | 104 | } |
99 | 105 | ||
100 | void _markNeedsBuildIfAllowed(Element el) { | 106 | void _markNeedsBuildIfAllowed(Element el) { |
101 | - if (_canMarkedToBuild != null) { | ||
102 | - final widget = el.widget, widgetName = el.widget.runtimeType.toString(); | ||
103 | - | ||
104 | - if (widget is! SU && !_canMarkedToBuild!.contains(widgetName)) return; | ||
105 | - } | 107 | + final widgetName = el.widget.runtimeType.toString(); |
108 | + final allowed = widget is SU || | ||
109 | + _canMarkedToBuild.contains(widgetName) || | ||
110 | + !(widgetName.startsWith('_') || flutterWidgets.contains(widgetName)); | ||
106 | 111 | ||
107 | - el.markNeedsBuild(); | 112 | + if (allowed) el.markNeedsBuild(); |
108 | } | 113 | } |
109 | 114 | ||
110 | void _updateTree(Element el) { | 115 | void _updateTree(Element el) { |
-
Please register or login to post a comment