flutterNesTheme function
ThemeData
flutterNesTheme({
- Color primaryColor = const Color(0xffb4b6f6),
- Brightness brightness = Brightness.light,
- NesTheme nesTheme = const NesTheme(pixelSize: 4),
- NesButtonTheme nesButtonTheme = const NesButtonTheme(normal: Color(0xffffffff), primary: Color(0xff209cee), success: Color(0xff92cc41), warning: Color(0xfff7d51d), error: Color(0xffe76e55), lightLabelColor: Color(0xffffffff), darkLabelColor: Color(0xff000000), lightIconTheme: NesIconTheme(primary: Color(0xffffffff), secondary: Color(0xff000000), accent: Color(0xff9badb7), shadow: Color(0xff696a6a)), darkIconTheme: NesIconTheme(primary: Color(0xff000000), secondary: Color(0xffffffff), accent: Color(0xff696a6a), shadow: Color(0xff9badb7))),
- NesIconTheme? nesIconTheme,
- NesSelectionListTheme nesSelectionListTheme = const NesSelectionListTheme(markerSize: Size(24, 24), itemMinHeight: 32),
- NesOverlayTransitionTheme? nesOverlayTransitionTheme,
- NesSnackbarTheme nesSnackbarTheme = const NesSnackbarTheme(normal: Color(0xffffffff), success: Color(0xff92cc41), warning: Color(0xfff7d51d), error: Color(0xffe76e55)),
- NesTooltipTheme? nesTooltipTheme,
- NesContainerTheme? nesContainerTheme,
- NesBottomSheetTheme? nesBottomSheetTheme,
- Iterable<
ThemeExtension> customExtensions = const [],
Creates a Flutter Nes ThemeData.
Implementation
ThemeData flutterNesTheme({
Color primaryColor = const Color(0xffb4b6f6),
Brightness brightness = Brightness.light,
NesTheme nesTheme = const NesTheme(pixelSize: 4),
NesButtonTheme nesButtonTheme = const NesButtonTheme(
normal: Color(0xffffffff),
primary: Color(0xff209cee),
success: Color(0xff92cc41),
warning: Color(0xfff7d51d),
error: Color(0xffe76e55),
lightLabelColor: Color(0xffffffff),
darkLabelColor: Color(0xff000000),
lightIconTheme: NesIconTheme(
primary: Color(0xffffffff),
secondary: Color(0xff000000),
accent: Color(0xff9badb7),
shadow: Color(0xff696a6a),
),
darkIconTheme: NesIconTheme(
primary: Color(0xff000000),
secondary: Color(0xffffffff),
accent: Color(0xff696a6a),
shadow: Color(0xff9badb7),
),
),
NesIconTheme? nesIconTheme,
NesSelectionListTheme nesSelectionListTheme = const NesSelectionListTheme(
markerSize: Size(24, 24),
itemMinHeight: 32,
),
NesOverlayTransitionTheme? nesOverlayTransitionTheme,
NesSnackbarTheme nesSnackbarTheme = const NesSnackbarTheme(
normal: Color(0xffffffff),
success: Color(0xff92cc41),
warning: Color(0xfff7d51d),
error: Color(0xffe76e55),
),
NesTooltipTheme? nesTooltipTheme,
NesContainerTheme? nesContainerTheme,
NesBottomSheetTheme? nesBottomSheetTheme,
Iterable<ThemeExtension<dynamic>> customExtensions = const [],
}) {
final iconTheme = nesIconTheme ??
(brightness == Brightness.light
? const NesIconTheme(
primary: Color(0xff000000),
secondary: Color(0xffffffff),
accent: Color(0xff9badb7),
shadow: Color(0xff696a6a),
)
: const NesIconTheme(
primary: Color(0xff808080),
secondary: Color(0xffe5e5e5),
accent: Color(0xff696a6a),
shadow: Color(0xff9badb7),
));
final overlayTransitionTheme = nesOverlayTransitionTheme ??
(brightness == Brightness.light
? const NesOverlayTransitionTheme(color: Color(0xff0d0d0d))
: const NesOverlayTransitionTheme(color: Color(0xff8c8c8c)));
final themeData = ThemeData(
brightness: brightness,
colorSchemeSeed: primaryColor,
);
final textTheme = GoogleFonts.pressStart2pTextTheme(
themeData.textTheme,
);
final toolTipTheme = nesTooltipTheme ??
NesTooltipTheme(
background: textTheme.bodyMedium?.color ?? Colors.black,
textColor: themeData.colorScheme.background,
);
final containerTheme = nesContainerTheme ??
NesContainerTheme(
backgroundColor: themeData.cardColor,
borderColor: textTheme.labelMedium?.color ?? Colors.black,
labelTextStyle: textTheme.labelMedium ?? const TextStyle(),
);
final bottomSheetTheme = nesBottomSheetTheme ??
NesBottomSheetTheme(
backgroundColor: themeData.cardColor,
borderColor: textTheme.labelMedium?.color ?? Colors.black,
);
return themeData.copyWith(
textTheme: textTheme,
extensions: [
nesTheme,
nesButtonTheme,
iconTheme,
nesSelectionListTheme,
overlayTransitionTheme,
nesSnackbarTheme,
toolTipTheme,
containerTheme,
bottomSheetTheme,
...customExtensions,
],
dividerTheme: DividerThemeData(
thickness: nesTheme.pixelSize.toDouble(),
color: textTheme.bodyMedium?.color,
),
inputDecorationTheme: InputDecorationTheme(
border: NesInputBorder(
borderSide: BorderSide(
color: textTheme.bodyMedium?.color ?? Colors.black,
width: nesTheme.pixelSize.toDouble(),
),
),
enabledBorder: NesInputBorder(
borderSide: BorderSide(
color: textTheme.bodyMedium?.color ?? Colors.black,
width: nesTheme.pixelSize.toDouble(),
),
),
focusedBorder: NesInputBorder(
borderSide: BorderSide(
width: nesTheme.pixelSize.toDouble(),
color: themeData.colorScheme.primary,
),
),
errorBorder: NesInputBorder(
borderSide: BorderSide(
width: nesTheme.pixelSize.toDouble(),
color: themeData.colorScheme.error,
),
),
focusedErrorBorder: NesInputBorder(
borderSide: BorderSide(
width: nesTheme.pixelSize.toDouble(),
color: themeData.colorScheme.error,
),
),
),
);
}