feat(ui_components): make component theme data copyable
This commit is contained in:
parent
3c3545abfe
commit
0337d4f97a
@ -14,9 +14,49 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:copy_with_extension/copy_with_extension.dart';
|
||||||
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
|
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
|
||||||
|
part 'component_theme_data.g.dart';
|
||||||
|
|
||||||
|
@CopyWith()
|
||||||
class ComponentThemeData {
|
class ComponentThemeData {
|
||||||
|
factory ComponentThemeData({
|
||||||
|
TopAppBarComponent? appBar,
|
||||||
|
TopNavigationBarComponent? topNavigationBarComponent,
|
||||||
|
BottomNavigationBarComponent? bottomNavigationBar,
|
||||||
|
ErrorWidgetComponent? errorWidget,
|
||||||
|
LoadingWidgetComponent? loadingWidget,
|
||||||
|
LoaderComponent? loaderComponent,
|
||||||
|
RichTextBuilderComponent? richTextBuilderComponent,
|
||||||
|
TextInputComponent? textInputComponent,
|
||||||
|
FileSelectionButtonComponent? fileSelectionButtonComponent,
|
||||||
|
FlatButtonComponent? flatButtonComponent,
|
||||||
|
SimpleIconButtonComponent? simpleIconButtonComponent,
|
||||||
|
SymbolButtonComponent? symbolButtonComponent,
|
||||||
|
InformationCardComponent? informationCardComponent,
|
||||||
|
PortfolioCardComponent? portfolioCardComponent,
|
||||||
|
QuoteCardComponent? quoteCardComponent,
|
||||||
|
SkillCardComponent? skillCardComponent,
|
||||||
|
}) =>
|
||||||
|
ComponentThemeData.raw(
|
||||||
|
appBar: appBar,
|
||||||
|
topNavigationBarComponent: topNavigationBarComponent,
|
||||||
|
bottomNavigationBar: bottomNavigationBar,
|
||||||
|
errorWidget: errorWidget,
|
||||||
|
loadingWidget: loadingWidget,
|
||||||
|
loaderComponent: loaderComponent,
|
||||||
|
richTextBuilderComponent: richTextBuilderComponent,
|
||||||
|
textInputComponent: textInputComponent,
|
||||||
|
fileSelectionButtonComponent: fileSelectionButtonComponent,
|
||||||
|
flatButtonComponent: flatButtonComponent,
|
||||||
|
simpleIconButtonComponent: simpleIconButtonComponent,
|
||||||
|
symbolButtonComponent: symbolButtonComponent,
|
||||||
|
informationCardComponent: informationCardComponent,
|
||||||
|
portfolioCardComponent: portfolioCardComponent,
|
||||||
|
quoteCardComponent: quoteCardComponent,
|
||||||
|
skillCardComponent: skillCardComponent,
|
||||||
|
);
|
||||||
|
|
||||||
const ComponentThemeData.raw({
|
const ComponentThemeData.raw({
|
||||||
this.appBar,
|
this.appBar,
|
||||||
this.topNavigationBarComponent,
|
this.topNavigationBarComponent,
|
||||||
@ -35,11 +75,11 @@ class ComponentThemeData {
|
|||||||
this.quoteCardComponent,
|
this.quoteCardComponent,
|
||||||
this.skillCardComponent,
|
this.skillCardComponent,
|
||||||
});
|
});
|
||||||
|
|
||||||
final TopAppBarComponent? appBar;
|
final TopAppBarComponent? appBar;
|
||||||
|
|
||||||
final TopNavigationBarComponent? topNavigationBarComponent;
|
final TopNavigationBarComponent? topNavigationBarComponent;
|
||||||
final BottomNavigationBarComponent? bottomNavigationBar;
|
final BottomNavigationBarComponent? bottomNavigationBar;
|
||||||
|
|
||||||
final ErrorWidgetComponent? errorWidget;
|
final ErrorWidgetComponent? errorWidget;
|
||||||
final LoadingWidgetComponent? loadingWidget;
|
final LoadingWidgetComponent? loadingWidget;
|
||||||
final LoaderComponent? loaderComponent;
|
final LoaderComponent? loaderComponent;
|
||||||
|
@ -0,0 +1,265 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'component_theme_data.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// CopyWithGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
abstract class _$ComponentThemeDataCWProxy {
|
||||||
|
ComponentThemeData appBar(TopAppBarComponent? appBar);
|
||||||
|
|
||||||
|
ComponentThemeData topNavigationBarComponent(
|
||||||
|
TopNavigationBarComponent? topNavigationBarComponent);
|
||||||
|
|
||||||
|
ComponentThemeData bottomNavigationBar(
|
||||||
|
BottomNavigationBarComponent? bottomNavigationBar);
|
||||||
|
|
||||||
|
ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget);
|
||||||
|
|
||||||
|
ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget);
|
||||||
|
|
||||||
|
ComponentThemeData loaderComponent(LoaderComponent? loaderComponent);
|
||||||
|
|
||||||
|
ComponentThemeData richTextBuilderComponent(
|
||||||
|
RichTextBuilderComponent? richTextBuilderComponent);
|
||||||
|
|
||||||
|
ComponentThemeData textInputComponent(TextInputComponent? textInputComponent);
|
||||||
|
|
||||||
|
ComponentThemeData fileSelectionButtonComponent(
|
||||||
|
FileSelectionButtonComponent? fileSelectionButtonComponent);
|
||||||
|
|
||||||
|
ComponentThemeData flatButtonComponent(
|
||||||
|
FlatButtonComponent? flatButtonComponent);
|
||||||
|
|
||||||
|
ComponentThemeData simpleIconButtonComponent(
|
||||||
|
SimpleIconButtonComponent? simpleIconButtonComponent);
|
||||||
|
|
||||||
|
ComponentThemeData symbolButtonComponent(
|
||||||
|
SymbolButtonComponent? symbolButtonComponent);
|
||||||
|
|
||||||
|
ComponentThemeData informationCardComponent(
|
||||||
|
InformationCardComponent? informationCardComponent);
|
||||||
|
|
||||||
|
ComponentThemeData portfolioCardComponent(
|
||||||
|
PortfolioCardComponent? portfolioCardComponent);
|
||||||
|
|
||||||
|
ComponentThemeData quoteCardComponent(QuoteCardComponent? quoteCardComponent);
|
||||||
|
|
||||||
|
ComponentThemeData skillCardComponent(SkillCardComponent? skillCardComponent);
|
||||||
|
|
||||||
|
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||||
|
///
|
||||||
|
/// Usage
|
||||||
|
/// ```dart
|
||||||
|
/// ComponentThemeData(...).copyWith(id: 12, name: "My name")
|
||||||
|
/// ````
|
||||||
|
ComponentThemeData call({
|
||||||
|
TopAppBarComponent? appBar,
|
||||||
|
TopNavigationBarComponent? topNavigationBarComponent,
|
||||||
|
BottomNavigationBarComponent? bottomNavigationBar,
|
||||||
|
ErrorWidgetComponent? errorWidget,
|
||||||
|
LoadingWidgetComponent? loadingWidget,
|
||||||
|
LoaderComponent? loaderComponent,
|
||||||
|
RichTextBuilderComponent? richTextBuilderComponent,
|
||||||
|
TextInputComponent? textInputComponent,
|
||||||
|
FileSelectionButtonComponent? fileSelectionButtonComponent,
|
||||||
|
FlatButtonComponent? flatButtonComponent,
|
||||||
|
SimpleIconButtonComponent? simpleIconButtonComponent,
|
||||||
|
SymbolButtonComponent? symbolButtonComponent,
|
||||||
|
InformationCardComponent? informationCardComponent,
|
||||||
|
PortfolioCardComponent? portfolioCardComponent,
|
||||||
|
QuoteCardComponent? quoteCardComponent,
|
||||||
|
SkillCardComponent? skillCardComponent,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Proxy class for `copyWith` functionality. This is a callable class and can be used as follows: `instanceOfComponentThemeData.copyWith(...)`. Additionally contains functions for specific fields e.g. `instanceOfComponentThemeData.copyWith.fieldName(...)`
|
||||||
|
class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
|
||||||
|
const _$ComponentThemeDataCWProxyImpl(this._value);
|
||||||
|
|
||||||
|
final ComponentThemeData _value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData appBar(TopAppBarComponent? appBar) => this(appBar: appBar);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData topNavigationBarComponent(
|
||||||
|
TopNavigationBarComponent? topNavigationBarComponent) =>
|
||||||
|
this(topNavigationBarComponent: topNavigationBarComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData bottomNavigationBar(
|
||||||
|
BottomNavigationBarComponent? bottomNavigationBar) =>
|
||||||
|
this(bottomNavigationBar: bottomNavigationBar);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget) =>
|
||||||
|
this(errorWidget: errorWidget);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget) =>
|
||||||
|
this(loadingWidget: loadingWidget);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData loaderComponent(LoaderComponent? loaderComponent) =>
|
||||||
|
this(loaderComponent: loaderComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData richTextBuilderComponent(
|
||||||
|
RichTextBuilderComponent? richTextBuilderComponent) =>
|
||||||
|
this(richTextBuilderComponent: richTextBuilderComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData textInputComponent(
|
||||||
|
TextInputComponent? textInputComponent) =>
|
||||||
|
this(textInputComponent: textInputComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData fileSelectionButtonComponent(
|
||||||
|
FileSelectionButtonComponent? fileSelectionButtonComponent) =>
|
||||||
|
this(fileSelectionButtonComponent: fileSelectionButtonComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData flatButtonComponent(
|
||||||
|
FlatButtonComponent? flatButtonComponent) =>
|
||||||
|
this(flatButtonComponent: flatButtonComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData simpleIconButtonComponent(
|
||||||
|
SimpleIconButtonComponent? simpleIconButtonComponent) =>
|
||||||
|
this(simpleIconButtonComponent: simpleIconButtonComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData symbolButtonComponent(
|
||||||
|
SymbolButtonComponent? symbolButtonComponent) =>
|
||||||
|
this(symbolButtonComponent: symbolButtonComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData informationCardComponent(
|
||||||
|
InformationCardComponent? informationCardComponent) =>
|
||||||
|
this(informationCardComponent: informationCardComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData portfolioCardComponent(
|
||||||
|
PortfolioCardComponent? portfolioCardComponent) =>
|
||||||
|
this(portfolioCardComponent: portfolioCardComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData quoteCardComponent(
|
||||||
|
QuoteCardComponent? quoteCardComponent) =>
|
||||||
|
this(quoteCardComponent: quoteCardComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData skillCardComponent(
|
||||||
|
SkillCardComponent? skillCardComponent) =>
|
||||||
|
this(skillCardComponent: skillCardComponent);
|
||||||
|
|
||||||
|
@override
|
||||||
|
|
||||||
|
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||||
|
///
|
||||||
|
/// Usage
|
||||||
|
/// ```dart
|
||||||
|
/// ComponentThemeData(...).copyWith(id: 12, name: "My name")
|
||||||
|
/// ````
|
||||||
|
ComponentThemeData call({
|
||||||
|
Object? appBar = const $CopyWithPlaceholder(),
|
||||||
|
Object? topNavigationBarComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? bottomNavigationBar = const $CopyWithPlaceholder(),
|
||||||
|
Object? errorWidget = const $CopyWithPlaceholder(),
|
||||||
|
Object? loadingWidget = const $CopyWithPlaceholder(),
|
||||||
|
Object? loaderComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? richTextBuilderComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? textInputComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? fileSelectionButtonComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? flatButtonComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? simpleIconButtonComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? symbolButtonComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? informationCardComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? portfolioCardComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? quoteCardComponent = const $CopyWithPlaceholder(),
|
||||||
|
Object? skillCardComponent = const $CopyWithPlaceholder(),
|
||||||
|
}) {
|
||||||
|
return ComponentThemeData(
|
||||||
|
appBar: appBar == const $CopyWithPlaceholder()
|
||||||
|
? _value.appBar
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: appBar as TopAppBarComponent?,
|
||||||
|
topNavigationBarComponent:
|
||||||
|
topNavigationBarComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.topNavigationBarComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: topNavigationBarComponent as TopNavigationBarComponent?,
|
||||||
|
bottomNavigationBar: bottomNavigationBar == const $CopyWithPlaceholder()
|
||||||
|
? _value.bottomNavigationBar
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: bottomNavigationBar as BottomNavigationBarComponent?,
|
||||||
|
errorWidget: errorWidget == const $CopyWithPlaceholder()
|
||||||
|
? _value.errorWidget
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: errorWidget as ErrorWidgetComponent?,
|
||||||
|
loadingWidget: loadingWidget == const $CopyWithPlaceholder()
|
||||||
|
? _value.loadingWidget
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: loadingWidget as LoadingWidgetComponent?,
|
||||||
|
loaderComponent: loaderComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.loaderComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: loaderComponent as LoaderComponent?,
|
||||||
|
richTextBuilderComponent:
|
||||||
|
richTextBuilderComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.richTextBuilderComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: richTextBuilderComponent as RichTextBuilderComponent?,
|
||||||
|
textInputComponent: textInputComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.textInputComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: textInputComponent as TextInputComponent?,
|
||||||
|
fileSelectionButtonComponent:
|
||||||
|
fileSelectionButtonComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.fileSelectionButtonComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: fileSelectionButtonComponent as FileSelectionButtonComponent?,
|
||||||
|
flatButtonComponent: flatButtonComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.flatButtonComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: flatButtonComponent as FlatButtonComponent?,
|
||||||
|
simpleIconButtonComponent:
|
||||||
|
simpleIconButtonComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.simpleIconButtonComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: simpleIconButtonComponent as SimpleIconButtonComponent?,
|
||||||
|
symbolButtonComponent:
|
||||||
|
symbolButtonComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.symbolButtonComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: symbolButtonComponent as SymbolButtonComponent?,
|
||||||
|
informationCardComponent:
|
||||||
|
informationCardComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.informationCardComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: informationCardComponent as InformationCardComponent?,
|
||||||
|
portfolioCardComponent:
|
||||||
|
portfolioCardComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.portfolioCardComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: portfolioCardComponent as PortfolioCardComponent?,
|
||||||
|
quoteCardComponent: quoteCardComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.quoteCardComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: quoteCardComponent as QuoteCardComponent?,
|
||||||
|
skillCardComponent: skillCardComponent == const $CopyWithPlaceholder()
|
||||||
|
? _value.skillCardComponent
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: skillCardComponent as SkillCardComponent?,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension $ComponentThemeDataCopyWith on ComponentThemeData {
|
||||||
|
/// Returns a callable class that can be used as follows: `instanceOfComponentThemeData.copyWith(...)` or like so:`instanceOfComponentThemeData.copyWith.fieldName(...)`.
|
||||||
|
// ignore: library_private_types_in_public_api
|
||||||
|
_$ComponentThemeDataCWProxy get copyWith =>
|
||||||
|
_$ComponentThemeDataCWProxyImpl(this);
|
||||||
|
}
|
@ -10,17 +10,20 @@ environment:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter: { sdk: flutter }
|
flutter: { sdk: flutter }
|
||||||
|
copy_with_extension: ^5.0.0
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
git:
|
git:
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
||||||
path: packages/wyatt_component_copy_with_extension
|
path: packages/wyatt_component_copy_with_extension
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.3.3
|
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.0
|
version: ^2.4.0
|
||||||
|
|
||||||
|
build_runner: ^2.3.3
|
||||||
|
copy_with_extension_gen: ^5.0.0
|
||||||
wyatt_component_copy_with_gen:
|
wyatt_component_copy_with_gen:
|
||||||
git:
|
git:
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
||||||
|
Loading…
x
Reference in New Issue
Block a user