getThemeTransition method

Transition? getThemeTransition()

Implementation

Transition? getThemeTransition() {
  // On web, use lightweight fade transitions by default to avoid
  // heavy GPU-intensive animations that can cause jank in browsers.
  if (kIsWeb) return Transition.fade;

  if (config.useStandaloneDesign) {
    if (config.useCupertinoDesign) return Transition.cupertino;
    final theme = config.materialTheme ?? material.ThemeData();
    return switch (theme.pageTransitionsTheme.builders[theme.platform]) {
      cupertino.CupertinoPageTransitionsBuilder() => Transition.cupertino,
      material.ZoomPageTransitionsBuilder() => Transition.zoom,
      material.FadeUpwardsPageTransitionsBuilder() => Transition.fade,
      material.OpenUpwardsPageTransitionsBuilder() => Transition.native,
      _ => null,
    };
  }

  final platform = context.theme.platform;
  final matchingTransition =
      Sint.theme.pageTransitionsTheme.builders[platform];
  switch (matchingTransition) {
    case CupertinoPageTransitionsBuilder():
      return Transition.cupertino;
    case ZoomPageTransitionsBuilder():
      return Transition.zoom;
    case FadeUpwardsPageTransitionsBuilder():
      return Transition.fade;
    case OpenUpwardsPageTransitionsBuilder():
      return Transition.native;
    default:
      return null;
  }
}