Могу ли я определить динамический цвет для режима dark

#flutter

Вопрос:

В собственной разработке iOS я могу определить динамический цвет для использования как в темном, так и в светлом режиме, как это:

 [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trait) {
    if (trait.userInterfaceStyle == UIUserInterfaceStyleDark) {
        return UIColorRGB(0x000000);
    } else {
        return UIColorRGB(0xFFFFFF);
    }
 }];
 

В Flutter я знаю, что могу установить эти два цвета в тему приложения MaterialApp и свойство цвета darkTheme, которое будет делать то же самое. Но количество свойств цвета тематических данных не бесконечно. И я не думаю, что цвет, который я хочу создать, имеет какое-то отношение к имени свойства, например, primaryColor или canvasColor и так далее (на самом деле цвет, который я хочу создать, может использоваться в приложении только один раз).

Итак, какова наилучшая практика в Flutter для управления цветами в светлом и темном режимах?

Комментарии:

1. Я делал это в своей практической работе. Вот ссылка на Github — github.com/Kishan-Dhankecha/vegcart

Ответ №1:

Если я правильно вас понял. Вы можете проверить текущую тему с помощью

 Theme.of(context).brightness == Brightness.dark

Theme.of(context).brightness == Brightness.dark
  ? return Color(0xFF2F6EA5)
  : return Colors.red;
 

Ответ №2:

Добавьте мое собственное решение к еще одному варианту, любой может сослаться на ответ Sucper и мой ответ для вашего собственного состояния

 class AppColors {
  static Color L_F4F5F7_D_2B323D() {
    final Brightness brightness =
        WidgetsBinding.instance!.platformDispatcher.platformBrightness;
    return brightness == Brightness.light ? Color(0xFFF4F5F7) : Color(0xFF2B323D);
  }

  static Color L_FFF7E5_D_393730() {
    final Brightness brightness =
        WidgetsBinding.instance!.platformDispatcher.platformBrightness;
    return brightness == Brightness.light ? Color(0xFFFFF7E5) : Color(0xFF393730);
  }
}