FThemeData.lerp constructor

FThemeData.lerp(
  1. FThemeData a,
  2. FThemeData b,
  3. double t
)

Creates a linear interpolation between two FThemeData using the given factor t.

Implementation

factory FThemeData.lerp(FThemeData a, FThemeData b, double t) => .new(
  debugLabel: t < 0.5 ? a.debugLabel : b.debugLabel,
  breakpoints: t < 0.5 ? a.breakpoints : b.breakpoints,
  colors: .lerp(a.colors, b.colors, t),
  typography: .lerp(a.typography, b.typography, t),
  style: a.style.lerp(b.style, t),
  accordionStyle: a.accordionStyle.lerp(b.accordionStyle, t),
  autocompleteStyle: a.autocompleteStyle.lerp(b.autocompleteStyle, t),
  alertStyles: FVariants.lerpWhere(a.alertStyles, b.alertStyles, t, (a, b, t) => a!.lerp(b!, t)),
  avatarStyle: a.avatarStyle.lerp(b.avatarStyle, t),
  badgeStyles: FVariants.lerpWhere(a.badgeStyles, b.badgeStyles, t, (a, b, t) => a!.lerp(b!, t)),
  bottomNavigationBarStyle: a.bottomNavigationBarStyle.lerp(b.bottomNavigationBarStyle, t),
  breadcrumbStyle: a.breadcrumbStyle.lerp(b.breadcrumbStyle, t),
  buttonStyles: FVariants.lerpWhere(a.buttonStyles, b.buttonStyles, t, (a, b, t) {
    if (a == null) {
      return b;
    }

    if (b == null) {
      return a;
    }

    return FVariants.lerpWhere(a, b, t, (a, b, t) {
      if (a == null) {
        return b;
      }

      if (b == null) {
        return a;
      }

      return a.lerp(b, t);
    });
  }),

  calendarStyle: a.calendarStyle.lerp(b.calendarStyle, t),

  cardStyle: a.cardStyle.lerp(b.cardStyle, t),

  checkboxStyle: a.checkboxStyle.lerp(b.checkboxStyle, t),

  circularProgressStyle: a.circularProgressStyle.lerp(b.circularProgressStyle, t),

  dateFieldStyle: a.dateFieldStyle.lerp(b.dateFieldStyle, t),

  determinateProgressStyle: a.determinateProgressStyle.lerp(b.determinateProgressStyle, t),

  dialogRouteStyle: a.dialogRouteStyle.lerp(b.dialogRouteStyle, t),

  dialogStyle: a.dialogStyle.lerp(b.dialogStyle, t),

  dividerStyles: FVariants.lerpWhere(a.dividerStyles, b.dividerStyles, t, (a, b, t) => a!.lerp(b!, t)),
  headerStyles: FVariants.lerpWhere(a.headerStyles, b.headerStyles, t, (a, b, t) => a!.lerp(b!, t)),
  itemStyles: FVariants.lerpWhere(a.itemStyles, b.itemStyles, t, (a, b, t) => a!.lerp(b!, t)),
  itemGroupStyle: a.itemGroupStyle.lerp(b.itemGroupStyle, t),
  labelStyles: a.labelStyles.lerp(b.labelStyles, t),
  lineCalendarStyle: a.lineCalendarStyle.lerp(b.lineCalendarStyle, t),
  multiSelectStyle: a.multiSelectStyle.lerp(b.multiSelectStyle, t),
  modalSheetStyle: a.modalSheetStyle.lerp(b.modalSheetStyle, t),
  paginationStyle: a.paginationStyle.lerp(b.paginationStyle, t),
  persistentSheetStyle: a.persistentSheetStyle.lerp(b.persistentSheetStyle, t),
  pickerStyle: a.pickerStyle.lerp(b.pickerStyle, t),
  popoverStyle: a.popoverStyle.lerp(b.popoverStyle, t),
  popoverMenuStyle: a.popoverMenuStyle.lerp(b.popoverMenuStyle, t),
  progressStyle: a.progressStyle.lerp(b.progressStyle, t),
  radioStyle: a.radioStyle.lerp(b.radioStyle, t),
  resizableStyles: FVariants.lerpWhere(a.resizableStyles, b.resizableStyles, t, (a, b, t) => a!.lerp(b!, t)),
  scaffoldStyle: a.scaffoldStyle.lerp(b.scaffoldStyle, t),
  selectStyle: a.selectStyle.lerp(b.selectStyle, t),
  selectGroupStyle: a.selectGroupStyle.lerp(b.selectGroupStyle, t),
  selectMenuTileStyle: a.selectMenuTileStyle.lerp(b.selectMenuTileStyle, t),
  sidebarStyle: a.sidebarStyle.lerp(b.sidebarStyle, t),
  sliderStyles: FVariants.lerpWhere(a.sliderStyles, b.sliderStyles, t, (a, b, t) => a!.lerp(b!, t)),
  toasterStyle: a.toasterStyle.lerp(b.toasterStyle, t),
  switchStyle: a.switchStyle.lerp(b.switchStyle, t),
  tabsStyle: a.tabsStyle.lerp(b.tabsStyle, t),
  tappableStyle: a.tappableStyle.lerp(b.tappableStyle, t),
  textFieldStyle: a.textFieldStyle.lerp(b.textFieldStyle, t),
  tileStyles: FVariants.lerpWhere(a.tileStyles, b.tileStyles, t, (a, b, t) => a!.lerp(b!, t)),
  tileGroupStyle: a.tileGroupStyle.lerp(b.tileGroupStyle, t),
  timeFieldStyle: a.timeFieldStyle.lerp(b.timeFieldStyle, t),
  timePickerStyle: a.timePickerStyle.lerp(b.timePickerStyle, t),
  tooltipStyle: a.tooltipStyle.lerp(b.tooltipStyle, t),
  // Copied from Flutter's [ThemeData].
  extensions: (a._extensions.map(
    (id, extensionA) => MapEntry(id, extensionA.lerp(b._extensions[id], t)),
  )..addEntries(b._extensions.entries.where((entry) => !a._extensions.containsKey(entry.key)))).values,
);