setTheme method

void setTheme({
  1. required Brightness brightness,
  2. required Color color,
  3. required String font,
})

Implementation

void setTheme(
    {required Brightness brightness,
    required Color color,
    required String font}) async {
  // set brightness
  var sameBrightness = brightness ==
      (System.theme.brightness == 'dark'
          ? Brightness.dark
          : Brightness.light);

  // set color
  var sameColor = toStr(color) == toStr(System.theme.colorScheme);

  // get text theme
  var textTheme = _getTextTheme(font);
  if (textTheme == null) font = System.theme.font ?? FmlEngine.defaultFont;

  // set font
  var sameFont = toStr(font) == System.theme.font;

  // set the theme
  if (!sameBrightness || !sameColor || !sameFont) {
    // set the theme
    _themeData = ThemeData(
        useMaterial3: true,
        brightness: brightness,
        colorSchemeSeed: color,
        fontFamily: font,
        textTheme: textTheme);

    // set system theme bindables
    _setSystemBindables(brightness: brightness, color: color, font: font);

    // notify
    notifyListeners();
  }
}