CalseeThemeController constructor

CalseeThemeController({
  1. Iterable<ThemeFamily>? families,
  2. Object? savedState,
  3. int? seed,
  4. bool accessible = false,
  5. ThemeIntent? intent,
})

A feed limited to families (all families when null or empty), restored from savedState when given, otherwise starting at seed (a random one when null).

accessible keeps only themes that also pass the stricter contrast checks (the Accessible themes setting in Calsee).

intent steers new themes (see intent); a fresh feed then starts on the intent's centred theme. A restored feed already steered by an equal intent stays where it was.

Implementation

CalseeThemeController({
  Iterable<ThemeFamily>? families,
  Object? savedState,
  int? seed,
  bool accessible = false,
  ThemeIntent? intent,
}) : _feed = savedState == null
         ? ThemeFeed(
             feedSeed: seed ?? ThemeFeed.randomFeedSeed(),
             intent: intent,
           )
         : ThemeFeed.fromJson(savedState),
     _accessible = accessible {
  if (families != null) this.families = families;
  if (savedState != null && intent != null && intent != _feed.intent) {
    _feed.steer(intent);
  }
}