diff --git a/examples/stac_gallery/bin/stac_cli.dart b/examples/stac_gallery/bin/stac_cli.dart index 3138b601..bb72d01b 100644 --- a/examples/stac_gallery/bin/stac_cli.dart +++ b/examples/stac_gallery/bin/stac_cli.dart @@ -1,6 +1,5 @@ import 'package:stac_models/stac_models.dart'; import 'package:stac_models/types/stac_border/stac_border.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_text_types.dart'; final double fontSize = 20; @@ -19,8 +18,8 @@ StacWidget homeScreen() { ), body: StacCenter( child: StacContainer( - width: StacDouble(200), - height: StacDouble(200), + width: 200, + height: 200, decoration: StacBoxDecoration( color: StacColors.red, border: StacBorder( diff --git a/examples/stac_gallery/lib/main.dart b/examples/stac_gallery/lib/main.dart index 1c36d872..e8d55773 100644 --- a/examples/stac_gallery/lib/main.dart +++ b/examples/stac_gallery/lib/main.dart @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; import 'package:stac/stac.dart' show Stac; import 'package:stac_gallery/app/example/example_screen_parser.dart'; import 'package:stac_models/core/stac_model.dart'; +import 'package:stac_models/painting/painting.dart'; import 'package:stac_models/painting/stac_color/stac_colors.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/widgets/widgets.dart'; import 'package:stac_webview/stac_webview.dart'; @@ -52,16 +52,19 @@ StacWidget homeScreen() { data: 'STAC dede', ), ), - body: StacCenter( - child: StacContainer( + body: StacColumn( + children: [ + StacContainer( + width: double.infinity, color: StacColors.blue, - width: StacDouble(100.0), - height: StacDouble(100.0), - child: StacCenter( - child: StacText( - data: 'Hello, World!', - ), - )), + child: StacText(data: 'Hello, World!'), + ), + StacContainer( + width: double.infinity, + color: StacColors.red, + child: StacText(data: 'Hello, World!'), + ), + ], ), ); } diff --git a/examples/stac_gallery/stac/home_screen.dart b/examples/stac_gallery/stac/home_screen.dart index 1782397b..0137370a 100644 --- a/examples/stac_gallery/stac/home_screen.dart +++ b/examples/stac_gallery/stac/home_screen.dart @@ -1,13 +1,12 @@ import 'package:stac_models/stac_models.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_text_types.dart'; StacWidget homeScreen() { return StacScaffold( body: StacCenter( child: StacContainer( - width: StacDouble(200.0), - height: StacDouble(200.0), + width: 200, + height: 200, decoration: StacBoxDecoration( color: StacColors.pink, ), diff --git a/packages/stac/lib/src/framework/stac.dart b/packages/stac/lib/src/framework/stac.dart index 9957a43f..57905072 100644 --- a/packages/stac/lib/src/framework/stac.dart +++ b/packages/stac/lib/src/framework/stac.dart @@ -187,6 +187,8 @@ class Stac { StacRegistry.instance, ); } + + Log.d(resolvedJson); final model = stacParser.getModel(resolvedJson); return stacParser.parse(context, model); diff --git a/packages/stac/lib/src/parsers/types/type_parser.dart b/packages/stac/lib/src/parsers/types/type_parser.dart index 7848d0e1..92467551 100644 --- a/packages/stac/lib/src/parsers/types/type_parser.dart +++ b/packages/stac/lib/src/parsers/types/type_parser.dart @@ -17,7 +17,6 @@ import 'package:stac_models/types/stac_box_shadow/stac_box_shadow.dart'; import 'package:stac_models/types/stac_box_shape.dart'; import 'package:stac_models/types/stac_clip.dart'; import 'package:stac_models/types/stac_cross_axis_alignment.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_drag_start_behavior.dart'; import 'package:stac_models/types/stac_filter_quality.dart'; import 'package:stac_models/types/stac_floating_action_button_location.dart'; @@ -330,24 +329,24 @@ extension StacRectParser on StacRect { Rect? get parse { Rect fromCenter() => Rect.fromCenter( center: center?.parse ?? Offset.zero, - width: width?.parse ?? 0.0, - height: height?.parse ?? 0.0, + width: width ?? 0.0, + height: height ?? 0.0, ); Rect fromCircle() => Rect.fromCircle( center: center?.parse ?? Offset.zero, - radius: radius?.parse ?? 0.0, + radius: radius ?? 0.0, ); Rect fromLTRB() => Rect.fromLTRB( - left?.parse ?? 0.0, - top?.parse ?? 0.0, - right?.parse ?? 0.0, - bottom?.parse ?? 0.0, + left ?? 0.0, + top ?? 0.0, + right ?? 0.0, + bottom ?? 0.0, ); Rect fromLTWH() => Rect.fromLTWH( - left?.parse ?? 0.0, - top?.parse ?? 0.0, - width?.parse ?? 0.0, - height?.parse ?? 0.0, + left ?? 0.0, + top ?? 0.0, + width ?? 0.0, + height ?? 0.0, ); Rect fromPoints() => Rect.fromPoints( a?.parse ?? Offset.zero, @@ -462,9 +461,9 @@ extension StacBoxShadowParser on StacBoxShadow { BoxShadow parse(BuildContext context) { return BoxShadow( color: color.toColor(context) ?? const Color(0xFF000000), - blurRadius: blurRadius?.parse ?? 0.0, + blurRadius: blurRadius ?? 0.0, offset: offset?.parse ?? Offset.zero, - spreadRadius: spreadRadius?.parse ?? 0.0, + spreadRadius: spreadRadius ?? 0.0, blurStyle: blurStyle?.parse ?? BlurStyle.normal, ); } @@ -517,13 +516,13 @@ extension StacGradientParser on StacGradient { colors: colors?.map((e) => e.toColor(context)!).toList() ?? [], begin: begin?.parse ?? Alignment.centerLeft, end: end?.parse ?? Alignment.centerRight, - stops: stops?.map((e) => e.parse).toList().toList(), + stops: stops, tileMode: tileMode?.parse ?? TileMode.clamp, ); Gradient radialGradient() => RadialGradient( colors: colors?.map((e) => e.toColor(context)!).toList() ?? [], - stops: stops?.map((e) => e.parse).toList().toList(), + stops: stops, tileMode: tileMode?.parse ?? TileMode.clamp, focal: focal?.parse, focalRadius: focalRadius ?? 0.0, @@ -533,7 +532,7 @@ extension StacGradientParser on StacGradient { Gradient sweepGradient() => SweepGradient( colors: colors?.map((e) => e.toColor(context)!).toList() ?? [], - stops: stops?.map((e) => e.parse).toList().toList(), + stops: stops, center: center?.parse ?? Alignment.center, startAngle: startAngle ?? 0.0, endAngle: endAngle ?? math.pi * 2, @@ -556,10 +555,10 @@ extension StacGradientParser on StacGradient { extension StacBoxConstraintsParser on StacBoxConstraints { BoxConstraints get parse { return BoxConstraints( - minWidth: minWidth.parse, - maxWidth: maxWidth.parse, - minHeight: minHeight.parse, - maxHeight: maxHeight.parse, + minWidth: minWidth ?? 0.0, + maxWidth: maxWidth ?? double.infinity, + minHeight: minHeight ?? 0.0, + maxHeight: maxHeight ?? double.infinity, ); } } diff --git a/packages/stac/lib/src/parsers/widgets/stac_center/stac_center_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_center/stac_center_parser.dart index 5b328866..e7f8ef1c 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_center/stac_center_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_center/stac_center_parser.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:stac/src/parsers/core/stac_widget_parser.dart'; import 'package:stac/src/utils/widget_type.dart'; import 'package:stac_framework/stac_framework.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/widgets/center/stac_center.dart'; class StacCenterParser extends StacParser { @@ -17,8 +16,8 @@ class StacCenterParser extends StacParser { @override Widget parse(BuildContext context, StacCenter model) { return Center( - widthFactor: model.widthFactor?.parse, - heightFactor: model.heightFactor?.parse, + widthFactor: model.widthFactor, + heightFactor: model.heightFactor, child: model.child?.parse(context), ); } diff --git a/packages/stac/lib/src/parsers/widgets/stac_column/stac_column_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_column/stac_column_parser.dart index 96be67ac..52357df9 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_column/stac_column_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_column/stac_column_parser.dart @@ -3,7 +3,6 @@ import 'package:stac/src/parsers/core/stac_widget_parser.dart'; import 'package:stac/src/parsers/types/type_parser.dart'; import 'package:stac_framework/stac_framework.dart'; import 'package:stac_models/stac_models.dart'; -import 'package:stac_models/types/stac_double.dart'; class StacColumnParser extends StacParser { const StacColumnParser(); @@ -25,7 +24,7 @@ class StacColumnParser extends StacParser { textDirection: model.textDirection?.parse, verticalDirection: model.verticalDirection?.parse ?? VerticalDirection.down, - spacing: model.spacing?.parse ?? 0.0, + spacing: model.spacing ?? 0, children: model.children.parseList(context) ?? [], ); } diff --git a/packages/stac/lib/src/parsers/widgets/stac_container/stac_container_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_container/stac_container_parser.dart index 89f05b94..23abb44d 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_container/stac_container_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_container/stac_container_parser.dart @@ -6,7 +6,6 @@ import 'package:stac/src/parsers/types/type_parser.dart'; import 'package:stac/src/utils/widget_type.dart'; import 'package:stac/stac.dart'; import 'package:stac_models/stac_models.dart'; -import 'package:stac_models/types/stac_double.dart'; class StacContainerParser extends StacParser { const StacContainerParser(); @@ -26,8 +25,8 @@ class StacContainerParser extends StacParser { color: model.color.toColor(context), decoration: model.decoration?.parse(context), foregroundDecoration: model.foregroundDecoration?.parse(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, constraints: model.constraints?.parse, margin: model.margin?.parse, transformAlignment: model.transformAlignment?.parse, diff --git a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_io.dart b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_io.dart index eee9edd1..0c9c329f 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_io.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_io.dart @@ -6,7 +6,6 @@ import 'package:flutter_svg/svg.dart'; import 'package:stac/src/parsers/types/type_parser.dart'; import 'package:stac/src/utils/widget_type.dart'; import 'package:stac/stac.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_image_type.dart'; import 'package:stac_models/widgets/image/stac_image.dart'; @@ -41,8 +40,8 @@ class StacImageParser extends StacParser { colorFilter: model.color != null ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn) : null, - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -53,8 +52,8 @@ class StacImageParser extends StacParser { imageUrl: model.src, alignment: model.alignment?.parse ?? Alignment.center, color: model.color?.toColor(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorWidget: (context, error, stackTrace) { return const SizedBox(); @@ -69,8 +68,8 @@ class StacImageParser extends StacParser { File(model.src), alignment: model.alignment?.parse ?? Alignment.center, color: model.color?.toColor(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -83,8 +82,8 @@ class StacImageParser extends StacParser { colorFilter: model.color != null ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn) : null, - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -99,8 +98,8 @@ class StacImageParser extends StacParser { model.src, alignment: model.alignment?.parse ?? Alignment.center, color: model.color?.toColor(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -113,8 +112,8 @@ class StacImageParser extends StacParser { colorFilter: model.color != null ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn) : null, - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); diff --git a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_web.dart b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_web.dart index 619efc76..69e88f44 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_web.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser_web.dart @@ -4,7 +4,6 @@ import 'package:stac/src/parsers/types/type_parser.dart'; import 'package:stac/src/utils/widget_type.dart'; import 'package:stac/stac.dart'; import 'package:stac_logger/stac_logger.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_image_type.dart'; import 'package:stac_models/widgets/image/stac_image.dart'; @@ -40,8 +39,8 @@ class StacImageParser extends StacParser { colorFilter: model.color != null ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn) : null, - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -52,8 +51,8 @@ class StacImageParser extends StacParser { model.src, alignment: model.alignment?.parse ?? Alignment.center, color: model.color?.toColor(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -68,8 +67,8 @@ class StacImageParser extends StacParser { model.src, alignment: model.alignment?.parse ?? Alignment.center, color: model.color?.toColor(context), - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse, errorBuilder: (context, error, stackTrace) { return const SizedBox(); @@ -82,8 +81,8 @@ class StacImageParser extends StacParser { colorFilter: model.color != null ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn) : null, - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, fit: model.fit?.parse ?? BoxFit.contain, errorBuilder: (context, error, stackTrace) { return const SizedBox(); diff --git a/packages/stac/lib/src/parsers/widgets/stac_row/stac_row_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_row/stac_row_parser.dart index a65a2545..19f67174 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_row/stac_row_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_row/stac_row_parser.dart @@ -3,7 +3,6 @@ import 'package:stac/src/parsers/core/stac_widget_parser.dart'; import 'package:stac/src/parsers/types/type_parser.dart'; import 'package:stac_framework/stac_framework.dart'; import 'package:stac_models/stac_models.dart'; -import 'package:stac_models/types/stac_double.dart'; class StacRowParser extends StacParser { const StacRowParser(); @@ -25,7 +24,7 @@ class StacRowParser extends StacParser { textDirection: model.textDirection?.parse, verticalDirection: model.verticalDirection?.parse ?? VerticalDirection.down, - spacing: model.spacing?.parse ?? 0, + spacing: model.spacing ?? 0, children: model.children.parseList(context) ?? []); } } diff --git a/packages/stac/lib/src/parsers/widgets/stac_sized_box/stac_sized_box_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_sized_box/stac_sized_box_parser.dart index db679ec1..6e39f78d 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_sized_box/stac_sized_box_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_sized_box/stac_sized_box_parser.dart @@ -3,7 +3,6 @@ import 'package:stac/src/parsers/core/stac_widget_parser.dart'; import 'package:stac/src/utils/widget_type.dart'; import 'package:stac_framework/stac_framework.dart'; import 'package:stac_models/stac_models.dart'; -import 'package:stac_models/types/stac_double.dart'; class StacSizedBoxParser extends StacParser { const StacSizedBoxParser(); @@ -18,8 +17,8 @@ class StacSizedBoxParser extends StacParser { @override Widget parse(BuildContext context, StacSizedBox model) { return SizedBox( - width: model.width?.parse, - height: model.height?.parse, + width: model.width, + height: model.height, child: model.child.parse(context), ); } diff --git a/packages/stac_models/lib/core/converters/double_converter.dart b/packages/stac_models/lib/core/converters/double_converter.dart new file mode 100644 index 00000000..16c6da31 --- /dev/null +++ b/packages/stac_models/lib/core/converters/double_converter.dart @@ -0,0 +1,43 @@ +import 'package:json_annotation/json_annotation.dart'; + +/// A JSON converter that converts string values to double. +/// +/// Handles special cases: +/// - "infinite" -> double.infinity +/// - "-infinite" -> double.negativeInfinity +/// - "20" -> 20.0 +/// - null -> null +/// - double values -> pass through +class DoubleConverter implements JsonConverter { + const DoubleConverter(); + + @override + double? fromJson(dynamic json) { + if (json == null) return null; + + if (json is double) return json; + if (json is int) return json.toDouble(); + + if (json is String) { + switch (json.toLowerCase()) { + case 'nan': + return double.nan; + case 'infinity': + return double.infinity; + case 'negativeInfinity': + return double.negativeInfinity; + case 'maxfinite': + return double.maxFinite; + case 'minpositive': + return double.minPositive; + default: + return double.tryParse(json); + } + } + + return null; + } + + @override + dynamic toJson(double? object) => object; +} diff --git a/packages/stac_models/lib/core/converters/widget_converter.dart b/packages/stac_models/lib/core/converters/widget_converter.dart new file mode 100644 index 00000000..d0f65a45 --- /dev/null +++ b/packages/stac_models/lib/core/converters/widget_converter.dart @@ -0,0 +1,44 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/stac_model.dart'; + +/// JSON Converter for individual StacWidget objects +/// Used with @StacWidgetJsonConverter() annotation +class StacWidgetConverter + implements JsonConverter?> { + const StacWidgetConverter(); + + @override + StacWidget? fromJson(Map? json) { + if (json == null) return null; + return StacWidget(jsonData: json); + } + + @override + Map? toJson(StacWidget? widget) { + return widget?.toJson(); + } +} + +/// JSON Converter for [List] objects +/// Used with @StacWidgetListJsonConverter() annotation +class StacWidgetListConverter + implements JsonConverter?, dynamic> { + const StacWidgetListConverter(); + + @override + List? fromJson(dynamic json) { + if (json == null) return null; + if (json is! List) return null; + + return json + .cast>() + .map((item) => StacWidget(jsonData: item)) + .toList(); + } + + @override + List>? toJson(List? widgets) { + if (widgets == null) return null; + return widgets.map((widget) => widget.toJson()).toList(); + } +} diff --git a/packages/stac_models/lib/core/stac_model.dart b/packages/stac_models/lib/core/stac_model.dart index a9987513..13712a14 100644 --- a/packages/stac_models/lib/core/stac_model.dart +++ b/packages/stac_models/lib/core/stac_model.dart @@ -23,42 +23,6 @@ class StacWidget extends StacElement { @override Map toJson() => jsonData ?? {}; + @JsonKey(includeToJson: true) String get type => throw UnimplementedError(); } - -/// JSON Converter for individual StacWidget objects -/// Used with @StacWidgetJsonConverter() annotation -class StacWidgetJsonConverter - implements JsonConverter?> { - const StacWidgetJsonConverter(); - - @override - StacWidget? fromJson(Map? json) { - if (json == null) return null; - return StacWidget(jsonData: json); - } - - @override - Map? toJson(StacWidget? widget) { - return widget?.toJson(); - } -} - -/// JSON Converter for [List] objects -/// Used with @StacWidgetListJsonConverter() annotation -class StacWidgetListJsonConverter - implements JsonConverter?, List>?> { - const StacWidgetListJsonConverter(); - - @override - List? fromJson(List>? json) { - if (json == null) return null; - return json.map((item) => StacWidget(jsonData: item)).toList(); - } - - @override - List>? toJson(List? widgets) { - if (widgets == null) return null; - return widgets.map((widget) => widget.toJson()).toList(); - } -} diff --git a/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.dart b/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.dart index 9c5b19f7..508b5d92 100644 --- a/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.dart +++ b/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.dart @@ -1,21 +1,28 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:stac_models/types/stac_double.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; part 'stac_box_constraints.g.dart'; @JsonSerializable() class StacBoxConstraints { const StacBoxConstraints({ - required this.minWidth, - required this.maxWidth, - required this.minHeight, - required this.maxHeight, + this.minWidth, + this.maxWidth, + this.minHeight, + this.maxHeight, }); - final StacDouble minWidth; - final StacDouble maxWidth; - final StacDouble minHeight; - final StacDouble maxHeight; + @DoubleConverter() + final double? minWidth; + + @DoubleConverter() + final double? maxWidth; + + @DoubleConverter() + final double? minHeight; + + @DoubleConverter() + final double? maxHeight; factory StacBoxConstraints.fromJson(Map json) => _$StacBoxConstraintsFromJson(json); diff --git a/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.g.dart b/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.g.dart index ea27335c..e9686cb0 100644 --- a/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.g.dart +++ b/packages/stac_models/lib/types/stac_box_constraints/stac_box_constraints.g.dart @@ -8,16 +8,16 @@ part of 'stac_box_constraints.dart'; StacBoxConstraints _$StacBoxConstraintsFromJson(Map json) => StacBoxConstraints( - minWidth: StacDouble.fromJson(json['minWidth']), - maxWidth: StacDouble.fromJson(json['maxWidth']), - minHeight: StacDouble.fromJson(json['minHeight']), - maxHeight: StacDouble.fromJson(json['maxHeight']), + minWidth: const DoubleConverter().fromJson(json['minWidth']), + maxWidth: const DoubleConverter().fromJson(json['maxWidth']), + minHeight: const DoubleConverter().fromJson(json['minHeight']), + maxHeight: const DoubleConverter().fromJson(json['maxHeight']), ); Map _$StacBoxConstraintsToJson(StacBoxConstraints instance) => { - 'minWidth': instance.minWidth.toJson(), - 'maxWidth': instance.maxWidth.toJson(), - 'minHeight': instance.minHeight.toJson(), - 'maxHeight': instance.maxHeight.toJson(), + 'minWidth': const DoubleConverter().toJson(instance.minWidth), + 'maxWidth': const DoubleConverter().toJson(instance.maxWidth), + 'minHeight': const DoubleConverter().toJson(instance.minHeight), + 'maxHeight': const DoubleConverter().toJson(instance.maxHeight), }; diff --git a/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.dart b/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.dart index 1e83d4fc..9fb7ed6e 100644 --- a/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.dart +++ b/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.dart @@ -1,7 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; import 'package:stac_models/stac_models.dart'; import 'package:stac_models/types/stac_blur_style.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_offset/stac_offset.dart'; part 'stac_box_shadow.g.dart'; @@ -17,9 +17,14 @@ class StacBoxShadow implements StacElement { }); final StacColor? color; - final StacDouble? blurRadius; + + @DoubleConverter() + final double? blurRadius; + final StacOffset? offset; - final StacDouble? spreadRadius; + + @DoubleConverter() + final double? spreadRadius; final StacBlurStyle? blurStyle; factory StacBoxShadow.fromJson(Map json) => diff --git a/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.g.dart b/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.g.dart index 046a079d..aa1287c5 100644 --- a/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.g.dart +++ b/packages/stac_models/lib/types/stac_box_shadow/stac_box_shadow.g.dart @@ -9,24 +9,20 @@ part of 'stac_box_shadow.dart'; StacBoxShadow _$StacBoxShadowFromJson(Map json) => StacBoxShadow( color: json['color'] as String?, - blurRadius: json['blurRadius'] == null - ? null - : StacDouble.fromJson(json['blurRadius']), + blurRadius: const DoubleConverter().fromJson(json['blurRadius']), offset: json['offset'] == null ? null : StacOffset.fromJson(json['offset'] as Map), - spreadRadius: json['spreadRadius'] == null - ? null - : StacDouble.fromJson(json['spreadRadius']), + spreadRadius: const DoubleConverter().fromJson(json['spreadRadius']), blurStyle: $enumDecodeNullable(_$StacBlurStyleEnumMap, json['blurStyle']), ); Map _$StacBoxShadowToJson(StacBoxShadow instance) => { 'color': instance.color, - 'blurRadius': instance.blurRadius?.toJson(), + 'blurRadius': const DoubleConverter().toJson(instance.blurRadius), 'offset': instance.offset?.toJson(), - 'spreadRadius': instance.spreadRadius?.toJson(), + 'spreadRadius': const DoubleConverter().toJson(instance.spreadRadius), 'blurStyle': _$StacBlurStyleEnumMap[instance.blurStyle], }; diff --git a/packages/stac_models/lib/types/stac_double.dart b/packages/stac_models/lib/types/stac_double.dart deleted file mode 100644 index c6c09846..00000000 --- a/packages/stac_models/lib/types/stac_double.dart +++ /dev/null @@ -1,74 +0,0 @@ -import 'package:stac_models/core/stac_model.dart'; - -class StacDouble extends StacElement { - final double _value; - - const StacDouble(this._value); - - static const StacDouble zero = StacDouble(0); - static const StacDouble infinity = StacDouble(double.infinity); - static const StacDouble maxFinite = StacDouble(double.maxFinite); - static const StacDouble minPositive = StacDouble(double.minPositive); - static const StacDouble nan = StacDouble(double.nan); - static const StacDouble negativeInfinity = StacDouble( - double.negativeInfinity, - ); - - factory StacDouble.fromJson(dynamic json) => _fromJson(json); - - static StacDouble _fromJson(dynamic json) { - if (json is num) { - return StacDouble(json.toDouble()); - } else if (json is String) { - return StacDouble(json.parseDouble()); - } else if (json is StacDouble) { - return json; - } - throw ("Unsupported StacDouble value"); - } - - @override - dynamic toJson() { - if (_value == double.infinity) { - return "infinity"; - } else if (_value == double.negativeInfinity) { - return "negativeInfinity"; - } else if (_value.isNaN) { - return "nan"; - } else if (_value == double.minPositive) { - return "minPositive"; - } else if (_value == double.maxFinite) { - return "maxFinite"; - } - return _value; - } -} - -extension StacDoubleParser on StacDouble { - double get parse { - return _value.toDouble(); - } -} - -extension on String { - double parseDouble() { - try { - switch (this) { - case "infinity": - return double.infinity; - case "negativeInfinity": - return double.negativeInfinity; - case "nan": - return double.nan; - case "minPositive": - return double.minPositive; - case "maxFinite": - return double.maxFinite; - default: - return double.parse(this); - } - } catch (e) { - throw ("Error parsing double: $this"); - } - } -} diff --git a/packages/stac_models/lib/types/stac_gradient/stac_gradient.dart b/packages/stac_models/lib/types/stac_gradient/stac_gradient.dart index 30bf206c..6db53e79 100644 --- a/packages/stac_models/lib/types/stac_gradient/stac_gradient.dart +++ b/packages/stac_models/lib/types/stac_gradient/stac_gradient.dart @@ -1,7 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:stac_models/painting/stac_color/stac_colors.dart'; import 'package:stac_models/types/stac_alignment.dart'; -import 'package:stac_models/types/stac_double.dart'; part 'stac_gradient.g.dart'; @@ -28,7 +27,7 @@ class StacGradient { final StacGradientType? gradientType; final List? colors; - final List? stops; + final List? stops; final StacAlignment? begin; final StacAlignment? end; final StacAlignment? center; diff --git a/packages/stac_models/lib/types/stac_gradient/stac_gradient.g.dart b/packages/stac_models/lib/types/stac_gradient/stac_gradient.g.dart index 95b198ea..ef1e77c6 100644 --- a/packages/stac_models/lib/types/stac_gradient/stac_gradient.g.dart +++ b/packages/stac_models/lib/types/stac_gradient/stac_gradient.g.dart @@ -12,7 +12,9 @@ StacGradient _$StacGradientFromJson(Map json) => StacGradient( json['gradientType'], ), colors: (json['colors'] as List?)?.map((e) => e as String).toList(), - stops: (json['stops'] as List?)?.map(StacDouble.fromJson).toList(), + stops: (json['stops'] as List?) + ?.map((e) => (e as num).toDouble()) + .toList(), begin: $enumDecodeNullable(_$StacAlignmentEnumMap, json['begin']), end: $enumDecodeNullable(_$StacAlignmentEnumMap, json['end']), center: $enumDecodeNullable(_$StacAlignmentEnumMap, json['center']), @@ -28,7 +30,7 @@ Map _$StacGradientToJson(StacGradient instance) => { 'gradientType': _$StacGradientTypeEnumMap[instance.gradientType], 'colors': instance.colors, - 'stops': instance.stops?.map((e) => e.toJson()).toList(), + 'stops': instance.stops, 'begin': _$StacAlignmentEnumMap[instance.begin], 'end': _$StacAlignmentEnumMap[instance.end], 'center': _$StacAlignmentEnumMap[instance.center], diff --git a/packages/stac_models/lib/types/stac_rect/stac_rect.dart b/packages/stac_models/lib/types/stac_rect/stac_rect.dart index 1dbf8711..f917052d 100644 --- a/packages/stac_models/lib/types/stac_rect/stac_rect.dart +++ b/packages/stac_models/lib/types/stac_rect/stac_rect.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; import 'package:stac_models/core/stac_model.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_offset/stac_offset.dart'; part 'stac_rect.g.dart'; @@ -24,15 +24,32 @@ class StacRect implements StacElement { }); final StacRectType rectType; - final StacDouble? left; - final StacDouble? top; - final StacDouble? right; - final StacDouble? bottom; - final StacDouble? width; - final StacDouble? height; + + @DoubleConverter() + final double? left; + + @DoubleConverter() + final double? top; + + @DoubleConverter() + final double? right; + + @DoubleConverter() + final double? bottom; + + @DoubleConverter() + final double? width; + + @DoubleConverter() + final double? height; + final StacOffset? center; - final StacDouble? radius; + + @DoubleConverter() + final double? radius; + final StacOffset? a; + final StacOffset? b; factory StacRect.fromJson(Map json) => diff --git a/packages/stac_models/lib/types/stac_rect/stac_rect.g.dart b/packages/stac_models/lib/types/stac_rect/stac_rect.g.dart index 892ba462..21200cac 100644 --- a/packages/stac_models/lib/types/stac_rect/stac_rect.g.dart +++ b/packages/stac_models/lib/types/stac_rect/stac_rect.g.dart @@ -8,16 +8,16 @@ part of 'stac_rect.dart'; StacRect _$StacRectFromJson(Map json) => StacRect( rectType: $enumDecode(_$StacRectTypeEnumMap, json['rectType']), - left: json['left'] == null ? null : StacDouble.fromJson(json['left']), - top: json['top'] == null ? null : StacDouble.fromJson(json['top']), - right: json['right'] == null ? null : StacDouble.fromJson(json['right']), - bottom: json['bottom'] == null ? null : StacDouble.fromJson(json['bottom']), - width: json['width'] == null ? null : StacDouble.fromJson(json['width']), - height: json['height'] == null ? null : StacDouble.fromJson(json['height']), + left: const DoubleConverter().fromJson(json['left']), + top: const DoubleConverter().fromJson(json['top']), + right: const DoubleConverter().fromJson(json['right']), + bottom: const DoubleConverter().fromJson(json['bottom']), + width: const DoubleConverter().fromJson(json['width']), + height: const DoubleConverter().fromJson(json['height']), center: json['center'] == null ? null : StacOffset.fromJson(json['center'] as Map), - radius: json['radius'] == null ? null : StacDouble.fromJson(json['radius']), + radius: const DoubleConverter().fromJson(json['radius']), a: json['a'] == null ? null : StacOffset.fromJson(json['a'] as Map), @@ -28,14 +28,14 @@ StacRect _$StacRectFromJson(Map json) => StacRect( Map _$StacRectToJson(StacRect instance) => { 'rectType': _$StacRectTypeEnumMap[instance.rectType]!, - 'left': instance.left?.toJson(), - 'top': instance.top?.toJson(), - 'right': instance.right?.toJson(), - 'bottom': instance.bottom?.toJson(), - 'width': instance.width?.toJson(), - 'height': instance.height?.toJson(), + 'left': const DoubleConverter().toJson(instance.left), + 'top': const DoubleConverter().toJson(instance.top), + 'right': const DoubleConverter().toJson(instance.right), + 'bottom': const DoubleConverter().toJson(instance.bottom), + 'width': const DoubleConverter().toJson(instance.width), + 'height': const DoubleConverter().toJson(instance.height), 'center': instance.center?.toJson(), - 'radius': instance.radius?.toJson(), + 'radius': const DoubleConverter().toJson(instance.radius), 'a': instance.a?.toJson(), 'b': instance.b?.toJson(), }; diff --git a/packages/stac_models/lib/widgets/app_bar/stac_app_bar.dart b/packages/stac_models/lib/widgets/app_bar/stac_app_bar.dart index bbe98ea7..e25625ca 100644 --- a/packages/stac_models/lib/widgets/app_bar/stac_app_bar.dart +++ b/packages/stac_models/lib/widgets/app_bar/stac_app_bar.dart @@ -1,4 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/painting/stac_color/stac_colors.dart'; import 'package:stac_models/painting/stac_edge_insets/stac_edge_insets.dart'; @@ -40,21 +41,21 @@ class StacAppBar extends StacWidget { this.actionsPadding, }); - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? leading; final bool? automaticallyImplyLeading; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? title; - @StacWidgetListJsonConverter() + @StacWidgetListConverter() final List? actions; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? flexibleSpace; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? bottom; final double? elevation; @@ -109,11 +110,7 @@ class StacAppBar extends StacWidget { _$StacAppBarFromJson(json); @override - Map toJson() { - final json = _$StacAppBarToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacAppBarToJson(this); @override String get type => 'appBar'; diff --git a/packages/stac_models/lib/widgets/app_bar/stac_app_bar.g.dart b/packages/stac_models/lib/widgets/app_bar/stac_app_bar.g.dart index a2679ba3..b45ead5a 100644 --- a/packages/stac_models/lib/widgets/app_bar/stac_app_bar.g.dart +++ b/packages/stac_models/lib/widgets/app_bar/stac_app_bar.g.dart @@ -7,20 +7,18 @@ part of 'stac_app_bar.dart'; // ************************************************************************** StacAppBar _$StacAppBarFromJson(Map json) => StacAppBar( - leading: const StacWidgetJsonConverter().fromJson( + leading: const StacWidgetConverter().fromJson( json['leading'] as Map?, ), automaticallyImplyLeading: json['automaticallyImplyLeading'] as bool?, - title: const StacWidgetJsonConverter().fromJson( + title: const StacWidgetConverter().fromJson( json['title'] as Map?, ), - actions: const StacWidgetListJsonConverter().fromJson( - json['actions'] as List>?, - ), - flexibleSpace: const StacWidgetJsonConverter().fromJson( + actions: const StacWidgetListConverter().fromJson(json['actions']), + flexibleSpace: const StacWidgetConverter().fromJson( json['flexibleSpace'] as Map?, ), - bottom: const StacWidgetJsonConverter().fromJson( + bottom: const StacWidgetConverter().fromJson( json['bottom'] as Map?, ), elevation: (json['elevation'] as num?)?.toDouble(), @@ -58,38 +56,38 @@ StacAppBar _$StacAppBarFromJson(Map json) => StacAppBar( : StacEdgeInsets.fromJson(json['actionsPadding']), ); -Map _$StacAppBarToJson(StacAppBar instance) => - { - 'leading': const StacWidgetJsonConverter().toJson(instance.leading), - 'automaticallyImplyLeading': instance.automaticallyImplyLeading, - 'title': const StacWidgetJsonConverter().toJson(instance.title), - 'actions': const StacWidgetListJsonConverter().toJson(instance.actions), - 'flexibleSpace': const StacWidgetJsonConverter().toJson( - instance.flexibleSpace, - ), - 'bottom': const StacWidgetJsonConverter().toJson(instance.bottom), - 'elevation': instance.elevation, - 'scrolledUnderElevation': instance.scrolledUnderElevation, - 'shadowColor': instance.shadowColor, - 'surfaceTintColor': instance.surfaceTintColor, - 'backgroundColor': instance.backgroundColor, - 'foregroundColor': instance.foregroundColor, - 'primary': instance.primary, - 'centerTitle': instance.centerTitle, - 'excludeHeaderSemantics': instance.excludeHeaderSemantics, - 'titleSpacing': instance.titleSpacing, - 'toolbarOpacity': instance.toolbarOpacity, - 'bottomOpacity': instance.bottomOpacity, - 'toolbarHeight': instance.toolbarHeight, - 'leadingWidth': instance.leadingWidth, - 'toolbarTextStyle': instance.toolbarTextStyle?.toJson(), - 'titleTextStyle': instance.titleTextStyle?.toJson(), - 'systemOverlayStyle': instance.systemOverlayStyle?.toJson(), - 'forceMaterialTransparency': instance.forceMaterialTransparency, - 'useDefaultSemanticsOrder': instance.useDefaultSemanticsOrder, - 'clipBehavior': _$StacClipEnumMap[instance.clipBehavior], - 'actionsPadding': instance.actionsPadding?.toJson(), - }; +Map _$StacAppBarToJson( + StacAppBar instance, +) => { + 'leading': const StacWidgetConverter().toJson(instance.leading), + 'automaticallyImplyLeading': instance.automaticallyImplyLeading, + 'title': const StacWidgetConverter().toJson(instance.title), + 'actions': const StacWidgetListConverter().toJson(instance.actions), + 'flexibleSpace': const StacWidgetConverter().toJson(instance.flexibleSpace), + 'bottom': const StacWidgetConverter().toJson(instance.bottom), + 'elevation': instance.elevation, + 'scrolledUnderElevation': instance.scrolledUnderElevation, + 'shadowColor': instance.shadowColor, + 'surfaceTintColor': instance.surfaceTintColor, + 'backgroundColor': instance.backgroundColor, + 'foregroundColor': instance.foregroundColor, + 'primary': instance.primary, + 'centerTitle': instance.centerTitle, + 'excludeHeaderSemantics': instance.excludeHeaderSemantics, + 'titleSpacing': instance.titleSpacing, + 'toolbarOpacity': instance.toolbarOpacity, + 'bottomOpacity': instance.bottomOpacity, + 'toolbarHeight': instance.toolbarHeight, + 'leadingWidth': instance.leadingWidth, + 'toolbarTextStyle': instance.toolbarTextStyle?.toJson(), + 'titleTextStyle': instance.titleTextStyle?.toJson(), + 'systemOverlayStyle': instance.systemOverlayStyle?.toJson(), + 'forceMaterialTransparency': instance.forceMaterialTransparency, + 'useDefaultSemanticsOrder': instance.useDefaultSemanticsOrder, + 'clipBehavior': _$StacClipEnumMap[instance.clipBehavior], + 'actionsPadding': instance.actionsPadding?.toJson(), + 'type': instance.type, +}; const _$StacClipEnumMap = { StacClip.none: 'none', diff --git a/packages/stac_models/lib/widgets/center/stac_center.dart b/packages/stac_models/lib/widgets/center/stac_center.dart index 9bdd419f..af5b62f3 100644 --- a/packages/stac_models/lib/widgets/center/stac_center.dart +++ b/packages/stac_models/lib/widgets/center/stac_center.dart @@ -1,6 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; -import 'package:stac_models/types/stac_double.dart'; part 'stac_center.g.dart'; @@ -8,22 +9,20 @@ part 'stac_center.g.dart'; class StacCenter extends StacWidget { StacCenter({this.widthFactor, this.heightFactor, this.child}); - final StacDouble? widthFactor; + @DoubleConverter() + final double? widthFactor; - final StacDouble? heightFactor; + @DoubleConverter() + final double? heightFactor; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? child; factory StacCenter.fromJson(Map json) => _$StacCenterFromJson(json); @override - Map toJson() { - final json = _$StacCenterToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacCenterToJson(this); @override String get type => 'center'; diff --git a/packages/stac_models/lib/widgets/center/stac_center.g.dart b/packages/stac_models/lib/widgets/center/stac_center.g.dart index 299617ba..a4c30e87 100644 --- a/packages/stac_models/lib/widgets/center/stac_center.g.dart +++ b/packages/stac_models/lib/widgets/center/stac_center.g.dart @@ -7,20 +7,17 @@ part of 'stac_center.dart'; // ************************************************************************** StacCenter _$StacCenterFromJson(Map json) => StacCenter( - widthFactor: json['widthFactor'] == null - ? null - : StacDouble.fromJson(json['widthFactor']), - heightFactor: json['heightFactor'] == null - ? null - : StacDouble.fromJson(json['heightFactor']), - child: const StacWidgetJsonConverter().fromJson( + widthFactor: const DoubleConverter().fromJson(json['widthFactor']), + heightFactor: const DoubleConverter().fromJson(json['heightFactor']), + child: const StacWidgetConverter().fromJson( json['child'] as Map?, ), ); Map _$StacCenterToJson(StacCenter instance) => { - 'widthFactor': instance.widthFactor?.toJson(), - 'heightFactor': instance.heightFactor?.toJson(), - 'child': const StacWidgetJsonConverter().toJson(instance.child), + 'widthFactor': const DoubleConverter().toJson(instance.widthFactor), + 'heightFactor': const DoubleConverter().toJson(instance.heightFactor), + 'child': const StacWidgetConverter().toJson(instance.child), + 'type': instance.type, }; diff --git a/packages/stac_models/lib/widgets/column/stac_column.dart b/packages/stac_models/lib/widgets/column/stac_column.dart index c3a059a2..87b06769 100644 --- a/packages/stac_models/lib/widgets/column/stac_column.dart +++ b/packages/stac_models/lib/widgets/column/stac_column.dart @@ -1,7 +1,8 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/types/stac_cross_axis_alignment.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_main_axis_alignment.dart'; import 'package:stac_models/types/stac_main_axis_size.dart'; import 'package:stac_models/types/stac_text_types.dart'; @@ -23,14 +24,21 @@ class StacColumn extends StacWidget { }); final StacMainAxisAlignment? mainAxisAlignment; + final StacMainAxisSize? mainAxisSize; + final StacCrossAxisAlignment? crossAxisAlignment; + final StacTextDirection? textDirection; + final StacVerticalDirection? verticalDirection; + final StacTextBaseline? textBaseline; - final StacDouble? spacing; - @StacWidgetListJsonConverter() + @DoubleConverter() + final double? spacing; + + @StacWidgetListConverter() final List? children; @override @@ -40,9 +48,5 @@ class StacColumn extends StacWidget { _$StacColumnFromJson(json); @override - Map toJson() { - final json = _$StacColumnToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacColumnToJson(this); } diff --git a/packages/stac_models/lib/widgets/column/stac_column.g.dart b/packages/stac_models/lib/widgets/column/stac_column.g.dart index 3e1e0c41..d69ed617 100644 --- a/packages/stac_models/lib/widgets/column/stac_column.g.dart +++ b/packages/stac_models/lib/widgets/column/stac_column.g.dart @@ -31,12 +31,8 @@ StacColumn _$StacColumnFromJson(Map json) => StacColumn( _$StacTextBaselineEnumMap, json['textBaseline'], ), - spacing: json['spacing'] == null - ? null - : StacDouble.fromJson(json['spacing']), - children: const StacWidgetListJsonConverter().fromJson( - json['children'] as List>?, - ), + spacing: const DoubleConverter().fromJson(json['spacing']), + children: const StacWidgetListConverter().fromJson(json['children']), ); Map _$StacColumnToJson(StacColumn instance) => @@ -50,8 +46,9 @@ Map _$StacColumnToJson(StacColumn instance) => 'verticalDirection': _$StacVerticalDirectionEnumMap[instance.verticalDirection], 'textBaseline': _$StacTextBaselineEnumMap[instance.textBaseline], - 'spacing': instance.spacing?.toJson(), - 'children': const StacWidgetListJsonConverter().toJson(instance.children), + 'spacing': const DoubleConverter().toJson(instance.spacing), + 'children': const StacWidgetListConverter().toJson(instance.children), + 'type': instance.type, }; const _$StacMainAxisAlignmentEnumMap = { diff --git a/packages/stac_models/lib/widgets/container/stac_container.dart b/packages/stac_models/lib/widgets/container/stac_container.dart index a5367e72..208e795d 100644 --- a/packages/stac_models/lib/widgets/container/stac_container.dart +++ b/packages/stac_models/lib/widgets/container/stac_container.dart @@ -1,4 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/painting/stac_box_decoration/stac_box_decoration.dart'; import 'package:stac_models/painting/stac_color/stac_colors.dart'; @@ -6,12 +8,25 @@ import 'package:stac_models/painting/stac_edge_insets/stac_edge_insets.dart'; import 'package:stac_models/types/stac_alignment.dart'; import 'package:stac_models/types/stac_box_constraints/stac_box_constraints.dart'; import 'package:stac_models/types/stac_clip.dart'; -import 'package:stac_models/types/stac_double.dart'; part 'stac_container.g.dart'; +/// A STAC model representing Flutter's [Container] widget. +/// +/// Combines styling, positioning, and sizing properties for child widgets. +/// Supports padding, margins, colors, decorations, sizing, and alignment. +/// +/// ```json +/// { +/// "type": "container", +/// "padding": {"all": 16.0}, +/// "color": "#FF0000", +/// "child": {"type": "text", "text": "Hello"} +/// } +/// ``` @JsonSerializable() class StacContainer extends StacWidget { + /// Creates a [StacContainer] with optional styling properties. const StacContainer({ this.alignment, this.padding, @@ -27,30 +42,56 @@ class StacContainer extends StacWidget { this.clipBehavior, }); + /// How to align the [child] within the container. final StacAlignment? alignment; + + /// Inner spacing around the [child]. final StacEdgeInsets? padding; + + /// Background color. Cannot be used with [decoration]. final StacColor? color; + + /// Background decoration (borders, gradients, shadows). final StacBoxDecoration? decoration; + + /// Foreground decoration painted over the [child]. final StacBoxDecoration? foregroundDecoration; - final StacDouble? width; - final StacDouble? height; + + /// Fixed width. If null, expands to fill available space. + /// Supports string values like "20" or "infinite". + @DoubleConverter() + final double? width; + + /// Fixed height. If null, expands to fill available space. + /// Supports string values like "20" or "infinite". + @DoubleConverter() + final double? height; + + /// Size constraints for the container. final StacBoxConstraints? constraints; + + /// Outer spacing around the container. final StacEdgeInsets? margin; + + /// Transform alignment for the container. final StacAlignment? transformAlignment; - @StacWidgetJsonConverter() + + /// The child widget contained within this container. + @StacWidgetConverter() final StacWidget? child; + + /// How to clip the container's content. final StacClip? clipBehavior; + /// Widget type identifier. @override String get type => 'container'; + /// Creates a [StacContainer] from JSON. factory StacContainer.fromJson(Map json) => _$StacContainerFromJson(json); + /// Converts this container to JSON. @override - Map toJson() { - final json = _$StacContainerToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacContainerToJson(this); } diff --git a/packages/stac_models/lib/widgets/container/stac_container.g.dart b/packages/stac_models/lib/widgets/container/stac_container.g.dart index e8cfc799..ec1e05b4 100644 --- a/packages/stac_models/lib/widgets/container/stac_container.g.dart +++ b/packages/stac_models/lib/widgets/container/stac_container.g.dart @@ -22,8 +22,8 @@ StacContainer _$StacContainerFromJson( : StacBoxDecoration.fromJson( json['foregroundDecoration'] as Map, ), - width: json['width'] == null ? null : StacDouble.fromJson(json['width']), - height: json['height'] == null ? null : StacDouble.fromJson(json['height']), + width: const DoubleConverter().fromJson(json['width']), + height: const DoubleConverter().fromJson(json['height']), constraints: json['constraints'] == null ? null : StacBoxConstraints.fromJson( @@ -36,7 +36,7 @@ StacContainer _$StacContainerFromJson( _$StacAlignmentEnumMap, json['transformAlignment'], ), - child: const StacWidgetJsonConverter().fromJson( + child: const StacWidgetConverter().fromJson( json['child'] as Map?, ), clipBehavior: $enumDecodeNullable(_$StacClipEnumMap, json['clipBehavior']), @@ -49,13 +49,14 @@ Map _$StacContainerToJson(StacContainer instance) => 'color': instance.color, 'decoration': instance.decoration?.toJson(), 'foregroundDecoration': instance.foregroundDecoration?.toJson(), - 'width': instance.width?.toJson(), - 'height': instance.height?.toJson(), + 'width': const DoubleConverter().toJson(instance.width), + 'height': const DoubleConverter().toJson(instance.height), 'constraints': instance.constraints?.toJson(), 'margin': instance.margin?.toJson(), 'transformAlignment': _$StacAlignmentEnumMap[instance.transformAlignment], - 'child': const StacWidgetJsonConverter().toJson(instance.child), + 'child': const StacWidgetConverter().toJson(instance.child), 'clipBehavior': _$StacClipEnumMap[instance.clipBehavior], + 'type': instance.type, }; const _$StacAlignmentEnumMap = { diff --git a/packages/stac_models/lib/widgets/image/stac_image.dart b/packages/stac_models/lib/widgets/image/stac_image.dart index 15e15918..552e199f 100644 --- a/packages/stac_models/lib/widgets/image/stac_image.dart +++ b/packages/stac_models/lib/widgets/image/stac_image.dart @@ -1,9 +1,9 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/painting/stac_color/stac_colors.dart'; import 'package:stac_models/types/stac_alignment.dart'; import 'package:stac_models/types/stac_box_fit.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_filter_quality.dart'; import 'package:stac_models/types/stac_image_repeat.dart'; import 'package:stac_models/types/stac_image_type.dart'; @@ -27,15 +27,27 @@ class StacImage extends StacWidget { }); final String src; + final StacAlignment? alignment; + final StacImageType? imageType; + final StacColor? color; - final StacDouble? width; - final StacDouble? height; + + @DoubleConverter() + final double? width; + + @DoubleConverter() + final double? height; + final StacBoxFit? fit; + final StacImageRepeat? repeat; + final StacFilterQuality? filterQuality; + final String? semanticLabel; + final bool? excludeFromSemantics; @override @@ -45,9 +57,5 @@ class StacImage extends StacWidget { _$StacImageFromJson(json); @override - Map toJson() { - final json = _$StacImageToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacImageToJson(this); } diff --git a/packages/stac_models/lib/widgets/image/stac_image.g.dart b/packages/stac_models/lib/widgets/image/stac_image.g.dart index 42099a58..2701e2ee 100644 --- a/packages/stac_models/lib/widgets/image/stac_image.g.dart +++ b/packages/stac_models/lib/widgets/image/stac_image.g.dart @@ -11,8 +11,8 @@ StacImage _$StacImageFromJson(Map json) => StacImage( alignment: $enumDecodeNullable(_$StacAlignmentEnumMap, json['alignment']), imageType: $enumDecodeNullable(_$StacImageTypeEnumMap, json['imageType']), color: json['color'] as String?, - width: json['width'] == null ? null : StacDouble.fromJson(json['width']), - height: json['height'] == null ? null : StacDouble.fromJson(json['height']), + width: const DoubleConverter().fromJson(json['width']), + height: const DoubleConverter().fromJson(json['height']), fit: $enumDecodeNullable(_$StacBoxFitEnumMap, json['fit']), repeat: $enumDecodeNullable(_$StacImageRepeatEnumMap, json['repeat']), filterQuality: $enumDecodeNullable( @@ -28,13 +28,14 @@ Map _$StacImageToJson(StacImage instance) => { 'alignment': _$StacAlignmentEnumMap[instance.alignment], 'imageType': _$StacImageTypeEnumMap[instance.imageType], 'color': instance.color, - 'width': instance.width?.toJson(), - 'height': instance.height?.toJson(), + 'width': const DoubleConverter().toJson(instance.width), + 'height': const DoubleConverter().toJson(instance.height), 'fit': _$StacBoxFitEnumMap[instance.fit], 'repeat': _$StacImageRepeatEnumMap[instance.repeat], 'filterQuality': _$StacFilterQualityEnumMap[instance.filterQuality], 'semanticLabel': instance.semanticLabel, 'excludeFromSemantics': instance.excludeFromSemantics, + 'type': instance.type, }; const _$StacAlignmentEnumMap = { diff --git a/packages/stac_models/lib/widgets/padding/stac_padding.dart b/packages/stac_models/lib/widgets/padding/stac_padding.dart index c2be4cf3..4989db54 100644 --- a/packages/stac_models/lib/widgets/padding/stac_padding.dart +++ b/packages/stac_models/lib/widgets/padding/stac_padding.dart @@ -1,4 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/painting/painting.dart'; @@ -10,7 +11,7 @@ class StacPadding extends StacWidget { final StacEdgeInsets? padding; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? child; @override @@ -20,9 +21,5 @@ class StacPadding extends StacWidget { _$StacPaddingFromJson(json); @override - Map toJson() { - final json = _$StacPaddingToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacPaddingToJson(this); } diff --git a/packages/stac_models/lib/widgets/padding/stac_padding.g.dart b/packages/stac_models/lib/widgets/padding/stac_padding.g.dart index 67854e56..30a9aca9 100644 --- a/packages/stac_models/lib/widgets/padding/stac_padding.g.dart +++ b/packages/stac_models/lib/widgets/padding/stac_padding.g.dart @@ -10,7 +10,7 @@ StacPadding _$StacPaddingFromJson(Map json) => StacPadding( padding: json['padding'] == null ? null : StacEdgeInsets.fromJson(json['padding']), - child: const StacWidgetJsonConverter().fromJson( + child: const StacWidgetConverter().fromJson( json['child'] as Map?, ), ); @@ -18,5 +18,6 @@ StacPadding _$StacPaddingFromJson(Map json) => StacPadding( Map _$StacPaddingToJson(StacPadding instance) => { 'padding': instance.padding?.toJson(), - 'child': const StacWidgetJsonConverter().toJson(instance.child), + 'child': const StacWidgetConverter().toJson(instance.child), + 'type': instance.type, }; diff --git a/packages/stac_models/lib/widgets/row/stac_row.dart b/packages/stac_models/lib/widgets/row/stac_row.dart index 5eec26c9..39fd2d65 100644 --- a/packages/stac_models/lib/widgets/row/stac_row.dart +++ b/packages/stac_models/lib/widgets/row/stac_row.dart @@ -1,7 +1,8 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; import 'package:stac_models/types/stac_cross_axis_alignment.dart'; -import 'package:stac_models/types/stac_double.dart'; import 'package:stac_models/types/stac_main_axis_alignment.dart'; import 'package:stac_models/types/stac_main_axis_size.dart'; import 'package:stac_models/types/stac_text_types.dart'; @@ -23,14 +24,21 @@ class StacRow extends StacWidget { }); final StacMainAxisAlignment? mainAxisAlignment; + final StacMainAxisSize? mainAxisSize; + final StacCrossAxisAlignment? crossAxisAlignment; + final StacTextDirection? textDirection; + final StacVerticalDirection? verticalDirection; + final StacTextBaseline? textBaseline; - final StacDouble? spacing; - @StacWidgetListJsonConverter() + @DoubleConverter() + final double? spacing; + + @StacWidgetListConverter() final List? children; @override @@ -40,9 +48,5 @@ class StacRow extends StacWidget { _$StacRowFromJson(json); @override - Map toJson() { - final json = _$StacRowToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacRowToJson(this); } diff --git a/packages/stac_models/lib/widgets/row/stac_row.g.dart b/packages/stac_models/lib/widgets/row/stac_row.g.dart index 31870fc2..1fe6d04d 100644 --- a/packages/stac_models/lib/widgets/row/stac_row.g.dart +++ b/packages/stac_models/lib/widgets/row/stac_row.g.dart @@ -31,12 +31,8 @@ StacRow _$StacRowFromJson(Map json) => StacRow( _$StacTextBaselineEnumMap, json['textBaseline'], ), - spacing: json['spacing'] == null - ? null - : StacDouble.fromJson(json['spacing']), - children: const StacWidgetListJsonConverter().fromJson( - json['children'] as List>?, - ), + spacing: const DoubleConverter().fromJson(json['spacing']), + children: const StacWidgetListConverter().fromJson(json['children']), ); Map _$StacRowToJson(StacRow instance) => { @@ -49,8 +45,9 @@ Map _$StacRowToJson(StacRow instance) => { 'verticalDirection': _$StacVerticalDirectionEnumMap[instance.verticalDirection], 'textBaseline': _$StacTextBaselineEnumMap[instance.textBaseline], - 'spacing': instance.spacing?.toJson(), - 'children': const StacWidgetListJsonConverter().toJson(instance.children), + 'spacing': const DoubleConverter().toJson(instance.spacing), + 'children': const StacWidgetListConverter().toJson(instance.children), + 'type': instance.type, }; const _$StacMainAxisAlignmentEnumMap = { diff --git a/packages/stac_models/lib/widgets/scaffold/stac_scaffold.dart b/packages/stac_models/lib/widgets/scaffold/stac_scaffold.dart index 81ad8659..0e58c7d8 100644 --- a/packages/stac_models/lib/widgets/scaffold/stac_scaffold.dart +++ b/packages/stac_models/lib/widgets/scaffold/stac_scaffold.dart @@ -1,4 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/stac_models.dart'; part 'stac_scaffold.g.dart'; @@ -31,21 +32,21 @@ class StacScaffold extends StacWidget { this.restorationId, }); - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? appBar; final String? backgroundColor; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? body; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? bottomNavigationBar; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? bottomSheet; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? drawer; final StacDragStartBehavior? drawerDragStartBehavior; @@ -56,7 +57,7 @@ class StacScaffold extends StacWidget { final String? drawerScrimColor; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? endDrawer; final bool? endDrawerEnableOpenDragGesture; @@ -65,7 +66,7 @@ class StacScaffold extends StacWidget { final bool? extendBodyBehindAppBar; - @StacWidgetJsonConverter() + @StacWidgetConverter() final StacWidget? floatingActionButton; final StacFloatingActionButtonLocation? floatingActionButtonLocation; @@ -76,7 +77,7 @@ class StacScaffold extends StacWidget { final StacAlignmentDirectional? persistentFooterAlignment; - @StacWidgetListJsonConverter() + @StacWidgetListConverter() final List? persistentFooterButtons; final bool? primary; @@ -92,9 +93,5 @@ class StacScaffold extends StacWidget { _$StacScaffoldFromJson(json); @override - Map toJson() { - final json = _$StacScaffoldToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacScaffoldToJson(this); } diff --git a/packages/stac_models/lib/widgets/scaffold/stac_scaffold.g.dart b/packages/stac_models/lib/widgets/scaffold/stac_scaffold.g.dart index b3f45d28..2d6859f2 100644 --- a/packages/stac_models/lib/widgets/scaffold/stac_scaffold.g.dart +++ b/packages/stac_models/lib/widgets/scaffold/stac_scaffold.g.dart @@ -7,20 +7,20 @@ part of 'stac_scaffold.dart'; // ************************************************************************** StacScaffold _$StacScaffoldFromJson(Map json) => StacScaffold( - appBar: const StacWidgetJsonConverter().fromJson( + appBar: const StacWidgetConverter().fromJson( json['appBar'] as Map?, ), backgroundColor: json['backgroundColor'] as String?, - body: const StacWidgetJsonConverter().fromJson( + body: const StacWidgetConverter().fromJson( json['body'] as Map?, ), - bottomNavigationBar: const StacWidgetJsonConverter().fromJson( + bottomNavigationBar: const StacWidgetConverter().fromJson( json['bottomNavigationBar'] as Map?, ), - bottomSheet: const StacWidgetJsonConverter().fromJson( + bottomSheet: const StacWidgetConverter().fromJson( json['bottomSheet'] as Map?, ), - drawer: const StacWidgetJsonConverter().fromJson( + drawer: const StacWidgetConverter().fromJson( json['drawer'] as Map?, ), drawerDragStartBehavior: @@ -32,14 +32,14 @@ StacScaffold _$StacScaffoldFromJson(Map json) => StacScaffold( drawerEdgeDragWidth: (json['drawerEdgeDragWidth'] as num?)?.toDouble(), drawerEnableOpenDragGesture: json['drawerEnableOpenDragGesture'] as bool?, drawerScrimColor: json['drawerScrimColor'] as String?, - endDrawer: const StacWidgetJsonConverter().fromJson( + endDrawer: const StacWidgetConverter().fromJson( json['endDrawer'] as Map?, ), endDrawerEnableOpenDragGesture: json['endDrawerEnableOpenDragGesture'] as bool?, extendBody: json['extendBody'] as bool?, extendBodyBehindAppBar: json['extendBodyBehindAppBar'] as bool?, - floatingActionButton: const StacWidgetJsonConverter().fromJson( + floatingActionButton: const StacWidgetConverter().fromJson( json['floatingActionButton'] as Map?, ), floatingActionButtonLocation: $enumDecodeNullable( @@ -52,51 +52,51 @@ StacScaffold _$StacScaffoldFromJson(Map json) => StacScaffold( _$StacAlignmentDirectionalEnumMap, json['persistentFooterAlignment'], ), - persistentFooterButtons: const StacWidgetListJsonConverter().fromJson( - json['persistentFooterButtons'] as List>?, + persistentFooterButtons: const StacWidgetListConverter().fromJson( + json['persistentFooterButtons'], ), primary: json['primary'] as bool?, resizeToAvoidBottomInset: json['resizeToAvoidBottomInset'] as bool?, restorationId: json['restorationId'] as String?, ); -Map _$StacScaffoldToJson( - StacScaffold instance, -) => { - 'appBar': const StacWidgetJsonConverter().toJson(instance.appBar), - 'backgroundColor': instance.backgroundColor, - 'body': const StacWidgetJsonConverter().toJson(instance.body), - 'bottomNavigationBar': const StacWidgetJsonConverter().toJson( - instance.bottomNavigationBar, - ), - 'bottomSheet': const StacWidgetJsonConverter().toJson(instance.bottomSheet), - 'drawer': const StacWidgetJsonConverter().toJson(instance.drawer), - 'drawerDragStartBehavior': - _$StacDragStartBehaviorEnumMap[instance.drawerDragStartBehavior], - 'drawerEdgeDragWidth': instance.drawerEdgeDragWidth, - 'drawerEnableOpenDragGesture': instance.drawerEnableOpenDragGesture, - 'drawerScrimColor': instance.drawerScrimColor, - 'endDrawer': const StacWidgetJsonConverter().toJson(instance.endDrawer), - 'endDrawerEnableOpenDragGesture': instance.endDrawerEnableOpenDragGesture, - 'extendBody': instance.extendBody, - 'extendBodyBehindAppBar': instance.extendBodyBehindAppBar, - 'floatingActionButton': const StacWidgetJsonConverter().toJson( - instance.floatingActionButton, - ), - 'floatingActionButtonLocation': - _$StacFloatingActionButtonLocationEnumMap[instance - .floatingActionButtonLocation], - 'onDrawerChanged': instance.onDrawerChanged, - 'onEndDrawerChanged': instance.onEndDrawerChanged, - 'persistentFooterAlignment': - _$StacAlignmentDirectionalEnumMap[instance.persistentFooterAlignment], - 'persistentFooterButtons': const StacWidgetListJsonConverter().toJson( - instance.persistentFooterButtons, - ), - 'primary': instance.primary, - 'resizeToAvoidBottomInset': instance.resizeToAvoidBottomInset, - 'restorationId': instance.restorationId, -}; +Map _$StacScaffoldToJson(StacScaffold instance) => + { + 'appBar': const StacWidgetConverter().toJson(instance.appBar), + 'backgroundColor': instance.backgroundColor, + 'body': const StacWidgetConverter().toJson(instance.body), + 'bottomNavigationBar': const StacWidgetConverter().toJson( + instance.bottomNavigationBar, + ), + 'bottomSheet': const StacWidgetConverter().toJson(instance.bottomSheet), + 'drawer': const StacWidgetConverter().toJson(instance.drawer), + 'drawerDragStartBehavior': + _$StacDragStartBehaviorEnumMap[instance.drawerDragStartBehavior], + 'drawerEdgeDragWidth': instance.drawerEdgeDragWidth, + 'drawerEnableOpenDragGesture': instance.drawerEnableOpenDragGesture, + 'drawerScrimColor': instance.drawerScrimColor, + 'endDrawer': const StacWidgetConverter().toJson(instance.endDrawer), + 'endDrawerEnableOpenDragGesture': instance.endDrawerEnableOpenDragGesture, + 'extendBody': instance.extendBody, + 'extendBodyBehindAppBar': instance.extendBodyBehindAppBar, + 'floatingActionButton': const StacWidgetConverter().toJson( + instance.floatingActionButton, + ), + 'floatingActionButtonLocation': + _$StacFloatingActionButtonLocationEnumMap[instance + .floatingActionButtonLocation], + 'onDrawerChanged': instance.onDrawerChanged, + 'onEndDrawerChanged': instance.onEndDrawerChanged, + 'persistentFooterAlignment': + _$StacAlignmentDirectionalEnumMap[instance.persistentFooterAlignment], + 'persistentFooterButtons': const StacWidgetListConverter().toJson( + instance.persistentFooterButtons, + ), + 'primary': instance.primary, + 'resizeToAvoidBottomInset': instance.resizeToAvoidBottomInset, + 'restorationId': instance.restorationId, + 'type': instance.type, + }; const _$StacDragStartBehaviorEnumMap = { StacDragStartBehavior.down: 'down', diff --git a/packages/stac_models/lib/widgets/sized_box/stac_sized_box.dart b/packages/stac_models/lib/widgets/sized_box/stac_sized_box.dart index d6e635f8..09398d08 100644 --- a/packages/stac_models/lib/widgets/sized_box/stac_sized_box.dart +++ b/packages/stac_models/lib/widgets/sized_box/stac_sized_box.dart @@ -1,6 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stac_models/core/converters/double_converter.dart'; +import 'package:stac_models/core/converters/widget_converter.dart'; import 'package:stac_models/core/stac_model.dart'; -import 'package:stac_models/types/stac_double.dart'; part 'stac_sized_box.g.dart'; @@ -8,10 +9,13 @@ part 'stac_sized_box.g.dart'; class StacSizedBox extends StacWidget { const StacSizedBox({this.width, this.height, this.child}); - final StacDouble? width; - final StacDouble? height; + @DoubleConverter() + final double? width; - @StacWidgetJsonConverter() + @DoubleConverter() + final double? height; + + @StacWidgetConverter() final StacWidget? child; @override @@ -21,9 +25,5 @@ class StacSizedBox extends StacWidget { _$StacSizedBoxFromJson(json); @override - Map toJson() { - final json = _$StacSizedBoxToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacSizedBoxToJson(this); } diff --git a/packages/stac_models/lib/widgets/sized_box/stac_sized_box.g.dart b/packages/stac_models/lib/widgets/sized_box/stac_sized_box.g.dart index e19ac964..5373dc1e 100644 --- a/packages/stac_models/lib/widgets/sized_box/stac_sized_box.g.dart +++ b/packages/stac_models/lib/widgets/sized_box/stac_sized_box.g.dart @@ -7,16 +7,17 @@ part of 'stac_sized_box.dart'; // ************************************************************************** StacSizedBox _$StacSizedBoxFromJson(Map json) => StacSizedBox( - width: json['width'] == null ? null : StacDouble.fromJson(json['width']), - height: json['height'] == null ? null : StacDouble.fromJson(json['height']), - child: const StacWidgetJsonConverter().fromJson( + width: const DoubleConverter().fromJson(json['width']), + height: const DoubleConverter().fromJson(json['height']), + child: const StacWidgetConverter().fromJson( json['child'] as Map?, ), ); Map _$StacSizedBoxToJson(StacSizedBox instance) => { - 'width': instance.width?.toJson(), - 'height': instance.height?.toJson(), - 'child': const StacWidgetJsonConverter().toJson(instance.child), + 'width': const DoubleConverter().toJson(instance.width), + 'height': const DoubleConverter().toJson(instance.height), + 'child': const StacWidgetConverter().toJson(instance.child), + 'type': instance.type, }; diff --git a/packages/stac_models/lib/widgets/text/stac_text.dart b/packages/stac_models/lib/widgets/text/stac_text.dart index a52e05c6..4ad96cd2 100644 --- a/packages/stac_models/lib/widgets/text/stac_text.dart +++ b/packages/stac_models/lib/widgets/text/stac_text.dart @@ -52,11 +52,7 @@ class StacText extends StacWidget { String get type => 'text'; @override - Map toJson() { - final json = _$StacTextToJson(this); - json['type'] = type; - return json; - } + Map toJson() => _$StacTextToJson(this); factory StacText.fromJson(Map json) => _$StacTextFromJson(json); diff --git a/packages/stac_models/lib/widgets/text/stac_text.g.dart b/packages/stac_models/lib/widgets/text/stac_text.g.dart index 0e2c500f..51cb43a8 100644 --- a/packages/stac_models/lib/widgets/text/stac_text.g.dart +++ b/packages/stac_models/lib/widgets/text/stac_text.g.dart @@ -46,6 +46,7 @@ Map _$StacTextToJson(StacText instance) => { 'semanticsLabel': instance.semanticsLabel, 'textWidthBasis': _$StacTextWidthBasisEnumMap[instance.textWidthBasis], 'selectionColor': instance.selectionColor, + 'type': instance.type, }; const _$StacTextAlignEnumMap = {