of static method

NavThemeData of(
  1. BuildContext context
)

Returns the nearest NavTheme.

Implementation

static NavThemeData of(BuildContext context) {
  final NavTheme? navTheme =
      context.dependOnInheritedWidgetOfExactType<NavTheme>();
  NavThemeData? navThemeData = navTheme?.data;

  if (navThemeData == null || !navThemeData._isConcrete) {
    final ThemeData themeData = Theme.of(context);
    final TextTheme textTheme = themeData.textTheme;
    final ColorScheme colorScheme = themeData.colorScheme;

    navThemeData ??= themeData.navTheme;

    final navValue =
        _NavThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final IconThemeData iconThemeData =
        navThemeData.iconThemeData ?? navValue.iconThemeData;
    final double itemsSpacing =
        navThemeData.itemsSpacing ?? navValue.itemsSpacing;
    final double width = navThemeData.width ?? navValue.width;
    final double height = navThemeData.height ?? navValue.height;
    final double indicatorWidth =
        navThemeData.indicatorWidth ?? navValue.indicatorWidth;
    final Duration animationDuration =
        navThemeData.animationDuration ?? navValue.animationDuration;

    return navThemeData.copyWith(
      iconThemeData: iconThemeData,
      itemsSpacing: itemsSpacing,
      width: width,
      height: height,
      indicatorWidth: indicatorWidth,
      animationDuration: animationDuration,
    );
  }

  assert(navThemeData._isConcrete);

  return navThemeData;
}