build method Null safety
- BuildContext context,
- int index
override
Returns the child with the given index.
Should return null if asked to build a widget with a greater index than exists. If this returns null, estimatedChildCount must subsequently return a precise non-null value (which is then used to implement RenderSliverBoxChildManager.childCount).
Subclasses typically override this function and wrap their children in AutomaticKeepAlive, IndexedSemantics, and RepaintBoundary widgets.
The values returned by this method are cached. To indicate that the widgets have changed, a new delegate must be provided, and the new delegate's shouldRebuild method must return true.
Implementation
@override
Widget? build(BuildContext context, int index) {
assert(children != null);
if (index < 0 || index >= children.length) {
return null;
}
Widget child = children[index];
final Key? key = child.key != null? _SaltedValueKey(child.key!) : null;
assert(
child != null,
"The sliver's children must not contain null values, but a null value was found at index $index",
);
if (addRepaintBoundaries) {
child = RepaintBoundary(child: child);
}
if (addSemanticIndexes) {
final int? semanticIndex = semanticIndexCallback(child, index);
if (semanticIndex != null) {
child = IndexedSemantics(index: semanticIndex + semanticIndexOffset, child: child);
}
}
if (addAutomaticKeepAlives) {
child = AutomaticKeepAlive(child: _SelectionKeepAlive(child: child));
}
return KeyedSubtree(key: key, child: child);
}