1. override
void performRebuild()

Calls the build method of the StatelessWidget object (for stateless widgets) or the State object (for stateful widgets) and then updates the widget tree.

Called automatically during mount to generate the first build, and by rebuild when the element needs updating.

Source

@override
void performRebuild() {
  assert(() {
    if (debugProfileBuildsEnabled)
      Timeline.startSync('${widget.runtimeType}');
    return true;
  });

  assert(_debugSetAllowIgnoredCallsToMarkNeedsBuild(true));
  Widget built;
  try {
    built = _builder(this);
    debugWidgetBuilderValue(widget, built);
  } catch (e, stack) {
    _debugReportException('building $this', e, stack);
    built = new ErrorWidget(e);
  } finally {
    // We delay marking the element as clean until after calling _builder so
    // that attempts to markNeedsBuild() during build() will be ignored.
    _dirty = false;
    assert(_debugSetAllowIgnoredCallsToMarkNeedsBuild(false));
  }
  try {
    _child = updateChild(_child, built, slot);
    assert(_child != null);
  } catch (e, stack) {
    _debugReportException('building $this', e, stack);
    built = new ErrorWidget(e);
    _child = updateChild(null, built, slot);
  }

  assert(() {
    if (debugProfileBuildsEnabled)
      Timeline.finishSync();
    return true;
  });
}