Speed up hot reload in the framework. (#7647)
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 074c325..1b8ce03 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -1606,7 +1606,6 @@
void scheduleBuildFor(BuildableElement element) {
assert(element != null);
assert(element.owner == this);
- assert(element._inDirtyList == _dirtyElements.contains(element));
assert(() {
if (debugPrintScheduleBuildForStacks)
debugPrintStack(label: 'scheduleBuildFor() called for $element${_dirtyElements.contains(element) ? " (ALREADY IN LIST)" : ""}');
@@ -1944,18 +1943,18 @@
bool _active = false;
void _reassemble() {
- assert(_active);
visitChildren((Element child) {
child._reassemble();
});
}
bool _debugIsInScope(Element target) {
- assert(target != null);
- if (target == this)
- return true;
- if (_parent != null)
- return _parent._debugIsInScope(target);
+ Element current = this;
+ while (current != null) {
+ if (target == current)
+ return true;
+ current = current._parent;
+ }
return false;
}
@@ -2099,13 +2098,15 @@
/// This function is called only during the "active" lifecycle state.
@mustCallSuper
void update(@checked Widget newWidget) {
- assert(_debugLifecycleState == _ElementLifecycle.active);
- assert(widget != null);
- assert(newWidget != null);
- assert(newWidget != widget);
- assert(depth != null);
- assert(_active);
- assert(Widget.canUpdate(widget, newWidget));
+ // This code is hot when hot reloading, so we try to
+ // only call _AssertionError._evaluateAssertion once.
+ assert(_debugLifecycleState == _ElementLifecycle.active
+ && widget != null
+ && newWidget != null
+ && newWidget != widget
+ && depth != null
+ && _active
+ && Widget.canUpdate(widget, newWidget));
_widget = newWidget;
}
@@ -2795,7 +2796,6 @@
@override
void _reassemble() {
- assert(_active); // otherwise markNeedsBuild is a no-op
markNeedsBuild();
super._reassemble();
}