seedkit_theme 0.2.21
seedkit_theme: ^0.2.21 copied to clipboard
Темизация для приложений экосистемы SeedKit
seedkit_theme #
Пакет темизации для SeedKit-приложений.
Интеграция #
- Создай тему до запуска приложения:
final theme = SeedKitThemeModule(
primaryColor: const Color(0xff4345C3),
fontFamily: FontFamily.golos,
customThemes: [
const UIAgreementThemeData.config(),
const UIButtonThemeData.config(),
const UIIconThemeData.config(),
],
);
- Если используется сохранение выбранной темы, перед созданием
ThemeCubitинициализируй хранилище:
await StorageFactory.to;
BlocProvider(
create: (_) => ThemeCubit(
ThemeRepository(ThemeProvider()),
),
);
- В корне приложения оберни
MaterialAppвThemeWidget:
ThemeWidget(
builder: (context, themeState) => MaterialApp.router(
theme: theme.light,
darkTheme: theme.dark,
themeMode: themeState.themeMode,
),
);
Использование #
SeedKitThemeModule— входная точка темизации; создаётThemeDataдля light/dark и добавляет customThemeExtension.ThemeCubit— менеджер состояния темы, умеет переключать тему черезswitchTheme.ThemeState— хранитThemeModeи флагisDarkMode.ThemeWidget— корневой виджет темизации приложения.ColorExtension— opacity через оператор*, парсинг hex черезColorExtension.fromHex.TextStyleExtension—setWeightиsetColor.ContextThemeExtension— быстрый доступ кcontext.colorThemeиcontext.textTheme.Weight— enum весов шрифта:regular,medium,semiBold,bold; вvalueхранится соответствующийFontWeight.SeedKitTextTheme—ThemeExtensionс теми же текстовыми стилями, что иStaticTextTheme; конструкторwithColorприменяет цвет ко всем стилям.SeedKitColorTheme—ThemeExtensionцветов приложения; содержит общие цвета, content/background/border/primary/neutral/semantic/status/sticker поля и конструкторыdark/light.ThemeProvider— provider хранения выбранной темы.ThemeRepository— репозиторий текущегоThemeModeсо stream и сохранением значения.
Импорты #
import 'package:seedkit_theme/seedkit_theme.dart';
import 'package:seedkit_theme/seedkit_theme_cubit.dart';
import 'package:seedkit_theme/seedkit_theme_extensions.dart';
import 'package:seedkit_theme/seedkit_theme_models.dart';
import 'package:seedkit_theme/seedkit_theme_provider.dart';
import 'package:seedkit_theme/seedkit_theme_repository.dart';