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