rebuild method

void rebuild()

Cause the component to update itself.

Called by the BuildOwner when rebuilding, by mount when the element is first built, and by update when the component has changed.

Implementation

void rebuild() {
  assert(_lifecycleState != _ElementLifecycle.initial);
  if (_lifecycleState != _ElementLifecycle.active || !_dirty) {
    return;
  }
  assert(_lifecycleState == _ElementLifecycle.active);
  assert(owner._debugStateLocked);
  Element? debugPreviousBuildTarget;
  assert(() {
    if (!binding.isClient && owner.isFirstBuild) return true;
    debugPreviousBuildTarget = owner._debugCurrentBuildTarget;
    owner._debugCurrentBuildTarget = this;
    return true;
  }());
  if (_observerElements != null && _observerElements!.isNotEmpty) {
    for (var observer in _observerElements!) {
      observer.willRebuildElement(this);
    }
  }
  owner.performRebuildOn(this, () {
    assert(() {
      if (!binding.isClient && owner.isFirstBuild) return true;
      assert(owner._debugCurrentBuildTarget == this);
      owner._debugCurrentBuildTarget = debugPreviousBuildTarget;
      return true;
    }());
    assert(!_dirty);
    if (_dependencies != null && _dependencies!.isNotEmpty) {
      for (var dependency in _dependencies!) {
        dependency.didRebuildDependent(this);
      }
    }
    if (_observerElements != null && _observerElements!.isNotEmpty) {
      for (var observer in _observerElements!) {
        observer.didRebuildElement(this);
      }
    }
  });
}