performRebuild method

  1. @override
void performRebuild()
override

Cause the widget to update itself.

Called by rebuild after the appropriate checks have been made.

The base implementation only clears the dirty flag.

Implementation

@override
void performRebuild() {
  super.performRebuild();
  // Deliberately queues NOTHING. Two causes mark this element dirty:
  //
  //   - [didChangeDependencies], which has already added every mounted
  //     key to [_dirtyKeys] and called `markNeedsLayout` by the time
  //     the build phase reaches here (`markNeedsBuild` only enqueues;
  //     framework.dart:5386-5390). Nothing is left to do.
  //   - `Element.reassemble`, which calls `markNeedsBuild()`
  //     (framework.dart:3754-3759) and reaches this element through
  //     [reassemble]'s `super` call; [reassemble] has queued every
  //     mounted key and marked layout by then, whichever instance the
  //     ancestor hands down (a fresh `SliverTree` additionally runs
  //     [update], whose queue is the same set). Nothing is left to do.
  //
  // The parent-rebuild path does not reach this method at all:
  // `RenderObjectElement.update` calls the private `_performRebuild()`
  // (framework.dart:6813), not this override, so [update] owns its own
  // queueing.
  //
  // RULE: a future `markNeedsBuild()` on this element queues its own
  // keys at its own call site. Landing here queues nothing, and the
  // next layout finds every mounted row clean, because [createChild]
  // early-returns for an existing, non-dirty key.
}