createBorderSide method Null safety

BorderSide createBorderSide(
  1. BuildContext? context,
  2. {Color? color,
  3. double? width}
)

Computes the BorderSide that represents a divider.

If color is null, then DividerThemeData.color is used. If that is also null, then ThemeData.dividerColor is used.

If width is null, then DividerThemeData.thickness is used. If that is also null, then this defaults to 0.0 (a hairline border).

If context is null, the default color of BorderSide is used and the default width of 0.0 is used.

This example uses this method to create a box that has a divider above and below it. This is sometimes useful with lists, for instance, to separate a scrollable section from the rest of the interface.
DecoratedBox(
  decoration: BoxDecoration(
    border: Border(
      top: Divider.createBorderSide(context),
      bottom: Divider.createBorderSide(context),
    ),
  ),
  // child: ...
)

Implementation

static BorderSide createBorderSide(BuildContext? context, { Color? color, double? width }) {
  final Color? effectiveColor = color
      ?? (context != null ? (DividerTheme.of(context).color ?? Theme.of(context).dividerColor) : null);
  final double effectiveWidth =  width
      ?? (context != null ? DividerTheme.of(context).thickness : null)
      ?? 0.0;

  // Prevent assertion since it is possible that context is null and no color
  // is specified.
  if (effectiveColor == null) {
    return BorderSide(
      width: effectiveWidth,
    );
  }
  return BorderSide(
    color: effectiveColor,
    width: effectiveWidth,
  );
}