Skip to content

Commit

Permalink
Revert "refactor: material states card to support dropdown widget (#811
Browse files Browse the repository at this point in the history
…)" (#812)

This reverts commit 6c96357.
  • Loading branch information
zeshuaro authored Jul 19, 2023
1 parent 15cdf6c commit 085222d
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 73 deletions.
14 changes: 7 additions & 7 deletions lib/basic_theme/view/basic_theme_editor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class _PrimaryColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Primary colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -98,7 +98,7 @@ class _SecondaryColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Secondary colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -140,7 +140,7 @@ class _TertiaryColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Tertiary colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -182,7 +182,7 @@ class _ErrorColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Error colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -224,7 +224,7 @@ class _NeutralColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Neutral colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -266,7 +266,7 @@ class _NeutralVariantColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Neutral variant colors',
items: [
MaterialStateItem(
Expand Down Expand Up @@ -308,7 +308,7 @@ class _InverseColorPickers extends StatelessWidget {
final cubit = context.read<BasicThemeCubit>();
final colorScheme = context.watch<BasicThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Inverse colors',
items: [
MaterialStateItem(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ abstract class AbstractButtonStyleEditor<T extends AbstractButtonStyleCubit>
final color = context.watch<T>().state.style?.foregroundColor;
final colorScheme = context.watch<ColorThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Foreground color',
tooltip: AbstractButtonStyleDocs.foregroundColor,
items: [
Expand All @@ -64,7 +64,7 @@ abstract class AbstractButtonStyleEditor<T extends AbstractButtonStyleCubit>
final color = context.watch<T>().state.style?.overlayColor;
final colorScheme = context.watch<ColorThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Overlay color',
tooltip: AbstractButtonStyleDocs.overlayColor,
items: [
Expand Down Expand Up @@ -97,7 +97,7 @@ abstract class AbstractButtonStyleEditor<T extends AbstractButtonStyleCubit>
final shadowColor = context.watch<T>().state.style?.shadowColor;
final themeShadowColor = context.watch<ColorThemeCubit>().state.shadowColor;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Shadow color',
tooltip: AbstractButtonStyleDocs.shadowColor,
items: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ abstract class AbstractFlatButtonStyleEditor<
Widget buildBackgroundColorPickers(BuildContext context) {
final color = context.watch<T>().state.style?.backgroundColor;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Background color',
tooltip: AbstractButtonStyleDocs.backgroundColor,
items: [
Expand All @@ -57,7 +57,7 @@ abstract class AbstractFlatButtonStyleEditor<
Widget buildElevationTextFields(BuildContext context) {
return BlocBuilder<T, ButtonStyleState>(
builder: (context, state) {
return MaterialStatesCard<MaterialStateTextField>(
return MaterialStatesCard<String>(
header: 'Elevation',
tooltip: AbstractButtonStyleDocs.elevation,
items: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class ElevatedButtonThemeEditor
context.watch<ElevatedButtonThemeCubit>().state.style?.backgroundColor;
final colorScheme = context.watch<ColorThemeCubit>().state.colorScheme;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Background color',
tooltip: AbstractButtonStyleDocs.backgroundColor,
items: [
Expand Down Expand Up @@ -73,7 +73,7 @@ class ElevatedButtonThemeEditor
final cubit = context.read<ElevatedButtonThemeCubit>();
final elevation = state.style?.elevation;

return MaterialStatesCard<MaterialStateTextField>(
return MaterialStatesCard<String>(
header: 'Elevation',
tooltip: AbstractButtonStyleDocs.elevation,
items: [
Expand Down
6 changes: 3 additions & 3 deletions lib/checkbox_theme/view/checkbox_theme_editor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class _FillColorPickers extends StatelessWidget {
final fillColor = context.watch<CheckboxThemeCubit>().state.theme.fillColor;
final colorThemeState = context.watch<ColorThemeCubit>().state;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Fill color',
tooltip: CheckboxThemeDocs.fillColor,
items: [
Expand Down Expand Up @@ -69,7 +69,7 @@ class _CheckColorPickers extends StatelessWidget {
Widget build(BuildContext context) {
return BlocBuilder<CheckboxThemeCubit, CheckboxThemeState>(
builder: (context, state) {
return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Check color',
tooltip: CheckboxThemeDocs.checkColor,
items: [
Expand All @@ -96,7 +96,7 @@ class _OverlayColorPickers extends StatelessWidget {
context.watch<CheckboxThemeCubit>().state.theme.overlayColor;
final colorThemeState = context.watch<ColorThemeCubit>().state;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Overlay color',
tooltip: CheckboxThemeDocs.overlayColor,
items: [
Expand Down
4 changes: 2 additions & 2 deletions lib/radio_theme/view/radio_theme_editor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class _FillColorPickers extends StatelessWidget {
final fillColor = context.watch<RadioThemeCubit>().state.theme.fillColor;
final colorThemeState = context.watch<ColorThemeCubit>().state;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Fill color',
tooltip: RadioThemeDocs.fillColor,
items: [
Expand Down Expand Up @@ -71,7 +71,7 @@ class _OverlayColorPickers extends StatelessWidget {
context.watch<RadioThemeCubit>().state.theme.overlayColor;
final colorThemeState = context.watch<ColorThemeCubit>().state;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Overlay color',
tooltip: RadioThemeDocs.overlayColor,
items: [
Expand Down
6 changes: 3 additions & 3 deletions lib/switch_theme/view/switch_theme_editor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class _ThumbColorPickers extends StatelessWidget {
final thumbColor = context.watch<SwitchThemeCubit>().state.theme.thumbColor;
final primaryColor = context.watch<ColorThemeCubit>().state.primaryColor;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Thumb color',
tooltip: SwitchThemeDocs.thumbColor,
items: [
Expand Down Expand Up @@ -69,7 +69,7 @@ class _TrackColorPickers extends StatelessWidget {
final trackColor = context.watch<SwitchThemeCubit>().state.theme.trackColor;
final primaryColor = context.watch<ColorThemeCubit>().state.primaryColor;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Track color',
tooltip: SwitchThemeDocs.trackColor,
items: [
Expand Down Expand Up @@ -106,7 +106,7 @@ class _OverlayColorPickers extends StatelessWidget {
context.watch<SwitchThemeCubit>().state.theme.overlayColor;
final colorThemeState = context.watch<ColorThemeCubit>().state;

return MaterialStatesCard<MaterialStateColorPicker>(
return MaterialStatesCard<Color>(
header: 'Overlay color',
tooltip: SwitchThemeDocs.overlayColor,
items: [
Expand Down
89 changes: 38 additions & 51 deletions lib/widgets/cards/material_states_card.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
import 'package:appainter/widgets/widgets.dart';
import 'package:flutter/material.dart';
import 'package:appainter/widgets/widgets.dart';

class MaterialStateItem<T> {
final Key? key;
final String title;
final String? tooltip;
final T value;
final ValueChanged<T> onValueChanged;
final bool colorEnableOpacity;

typedef MaterialStateColorPicker = Color;
typedef MaterialStateTextField = String;
typedef MaterialStateDropdown = String;
const MaterialStateItem({
required this.title,
required this.value,
required this.onValueChanged,
this.key,
this.tooltip,
this.colorEnableOpacity = true,
});
}

class MaterialStatesCard<T> extends StatelessWidget {
final String header;
Expand All @@ -15,16 +29,13 @@ class MaterialStatesCard<T> extends StatelessWidget {
required this.header,
required this.items,
this.tooltip,
}) : assert(T == MaterialStateColorPicker ||
T == MaterialStateTextField ||
T == MaterialStateDropdown), // coverage:ignore-line
super(key: key);
}) : super(key: key);

@override
Widget build(BuildContext context) {
return MyCard(
color: Theme.of(context).brightness == Brightness.dark
? Colors.grey[700] // coverage:ignore-line
? Colors.grey[700]
: Colors.grey[100],
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
Expand Down Expand Up @@ -54,26 +65,6 @@ class MaterialStatesCard<T> extends StatelessWidget {
}
}

class MaterialStateItem<T> {
final Key? key;
final String title;
final String? tooltip;
final T value;
final ValueChanged<T> onValueChanged;
final bool colorEnableOpacity;

const MaterialStateItem({
required this.title,
required this.value,
required this.onValueChanged,
this.key,
this.tooltip,
this.colorEnableOpacity = true,
}) : assert(T == MaterialStateColorPicker ||
T == MaterialStateTextField ||
T == MaterialStateDropdown); // coverage:ignore-line
}

class _Header extends StatelessWidget {
final String header;
final String? tooltip;
Expand Down Expand Up @@ -110,31 +101,27 @@ class _StateListTile<T> extends StatelessWidget {
required this.onValueChanged,
this.tooltip,
this.colorEnableOpacity = true,
}) : assert(T == MaterialStateColorPicker ||
T == MaterialStateTextField ||
T == MaterialStateDropdown), // coverage:ignore-line
super(key: key);
}) : super(key: key);

@override
Widget build(BuildContext context) {
switch (T) {
case MaterialStateColorPicker:
return ColorListTile(
title: title,
tooltip: tooltip,
color: value as Color,
onColorChanged: onValueChanged as ValueChanged<Color>,
enableOpacity: colorEnableOpacity,
);
case MaterialStateTextField:
return MyTextFormField(
labelText: title,
tooltip: tooltip,
initialValue: value as String,
onChanged: onValueChanged as ValueChanged<String>,
);
default:
throw Exception('Unsupported type: $T'); // coverage:ignore-line
if (T == Color) {
return ColorListTile(
title: title,
tooltip: tooltip,
color: value as Color,
onColorChanged: onValueChanged as ValueChanged<Color>,
enableOpacity: colorEnableOpacity,
);
} else if (T == String) {
return MyTextFormField(
labelText: title,
tooltip: tooltip,
initialValue: value as String,
onChanged: onValueChanged as ValueChanged<String>,
);
} else {
throw Exception('Unsupported type: $T');
}
}
}

0 comments on commit 085222d

Please sign in to comment.