LevelThemes constructor

LevelThemes({
  1. required TetrisTheme base,
  2. List<LevelPalette>? palettes,
  3. int levelsPerPalette = 1,
  4. bool? recolorBoard,
})

When recolorBoard is null, board colors are replaced only if base has a dark board, so the built-in dark palettes do not clash with light themes' text styles.

Implementation

LevelThemes({
  required this.base,
  List<LevelPalette>? palettes,
  this.levelsPerPalette = 1,
  bool? recolorBoard,
}) : assert(levelsPerPalette > 0, 'levelsPerPalette must be positive'),
     palettes = palettes ?? LevelPalette.classic,
     _themes = [
       for (final p in palettes ?? LevelPalette.classic)
         p.applyTo(
           base,
           recolorBoard:
               recolorBoard ?? base.boardBackground.computeLuminance() < 0.5,
         ),
     ] {
  assert(_themes.isNotEmpty, 'palettes must not be empty');
}