From d0b96931f864b026be0f3a44747aa39e96b4d96c Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Tue, 28 Mar 2023 19:54:16 +0300 Subject: [PATCH 1/6] ListViews #1 (cherry picked from commit 0ab11182e3bc20e2b3967d5e8f81f51cdd289eed) --- lib/src/api/models/webview_models.dart | 12 +- lib/src/api/node_json_converter.dart | 3 +- lib/src/api/nodes/base_node.dart | 2 +- lib/src/api/nodes/list_view_node.dart | 194 +++++++++++++++++ lib/src/api/nodes/list_view_node.g.dart | 201 ++++++++++++++++++ lib/src/api/nodes/nodes.dart | 7 +- ...t => web_view_google_maps_properties.dart} | 124 +++++------ ...=> web_view_google_maps_properties.g.dart} | 110 +++++----- .../{webview_node.dart => web_view_node.dart} | 108 +++++----- ...bview_node.g.dart => web_view_node.g.dart} | 52 ++--- ....dart => web_view_twitter_properties.dart} | 146 ++++++------- ...art => web_view_twitter_properties.g.dart} | 110 +++++----- 12 files changed, 733 insertions(+), 336 deletions(-) create mode 100644 lib/src/api/nodes/list_view_node.dart create mode 100644 lib/src/api/nodes/list_view_node.g.dart rename lib/src/api/nodes/{webview_google_maps_properties.dart => web_view_google_maps_properties.dart} (83%) rename lib/src/api/nodes/{webview_google_maps_properties.g.dart => web_view_google_maps_properties.g.dart} (84%) rename lib/src/api/nodes/{webview_node.dart => web_view_node.dart} (77%) rename lib/src/api/nodes/{webview_node.g.dart => web_view_node.g.dart} (81%) rename lib/src/api/nodes/{webview_twitter_properties.dart => web_view_twitter_properties.dart} (80%) rename lib/src/api/nodes/{webview_twitter_properties.g.dart => web_view_twitter_properties.g.dart} (82%) diff --git a/lib/src/api/models/webview_models.dart b/lib/src/api/models/webview_models.dart index 3571f0a..77987ef 100644 --- a/lib/src/api/models/webview_models.dart +++ b/lib/src/api/models/webview_models.dart @@ -3,7 +3,7 @@ // license that can be found in the LICENSE.md file. /// Type of source for a webview. -enum WebviewWebpageSourceType { +enum WebViewWebpageSourceType { /// A URL address of some website. url('URL link'), @@ -17,11 +17,11 @@ enum WebviewWebpageSourceType { final String label; /// Default constructor for this enum. - const WebviewWebpageSourceType(this.label); + const WebViewWebpageSourceType(this.label); } /// Different types of supported webviews. -enum WebviewType { +enum WebViewType { /// A webpage on the web. webpage('Webpage'), @@ -35,11 +35,11 @@ enum WebviewType { final String label; /// Default constructor for this enum. - const WebviewType(this.label); + const WebViewType(this.label); } /// Represents media playback policy for a webview. -enum WebviewMediaAutoPlaybackPolicy { +enum WebViewMediaAutoPlaybackPolicy { /// Initiate media playback only on user interaction. requireUserActionForAllMedia('Never autoplay any media'), @@ -50,5 +50,5 @@ enum WebviewMediaAutoPlaybackPolicy { final String label; /// Default constructor for this enum. - const WebviewMediaAutoPlaybackPolicy(this.label); + const WebViewMediaAutoPlaybackPolicy(this.label); } diff --git a/lib/src/api/node_json_converter.dart b/lib/src/api/node_json_converter.dart index 85ff6f6..f96ab7f 100644 --- a/lib/src/api/node_json_converter.dart +++ b/lib/src/api/node_json_converter.dart @@ -67,10 +67,11 @@ class NodeJsonConverter implements JsonConverter { 'embeddedVideo': EmbeddedVideoNode.fromJson, 'divider': DividerNode.fromJson, 'loadingIndicator': LoadingIndicatorNode.fromJson, - 'webview': WebviewNode.fromJson, + 'webView': WebViewNode.fromJson, 'dropdown': DropdownNode.fromJson, 'progressBar': ProgressBarNode.fromJson, 'variance': VarianceNode.fromJson, + 'listView': ListViewNode.fromJson, }; } diff --git a/lib/src/api/nodes/base_node.dart b/lib/src/api/nodes/base_node.dart index 362338f..ec418d7 100644 --- a/lib/src/api/nodes/base_node.dart +++ b/lib/src/api/nodes/base_node.dart @@ -65,7 +65,7 @@ abstract class BaseNode with SerializableMixin, EquatableMixin { /// it to true. Otherwise, the padding control won't show up in the editor. /// /// Nodes that can't support external padding modifications are like - /// [EmbeddedVideoNode], [WebviewNode], [IconNode], [TextNode], etc. + /// [EmbeddedVideoNode], [WebViewNode], [IconNode], [TextNode], etc. final bool supportsPadding = false; /// Constraints apply to the [middleBoxLocal] diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart new file mode 100644 index 0000000..c53fe1d --- /dev/null +++ b/lib/src/api/nodes/list_view_node.dart @@ -0,0 +1,194 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; + +import '../mixins.dart'; +import '../models/models.dart'; +import 'divider_node.dart'; +import 'single_placeholder_node.dart'; + +part 'list_view_node.g.dart'; + +/// A material design [ListView]. +/// Refer to [ListView](https://api.flutter.dev/flutter/widgets/ListView-class.html) in Flutter for more details. +@JsonSerializable() +class ListViewNode extends SinglePlaceholderNode + with + ScrollableMixin, + CustomPropertiesMixin, + VariablePropertiesMixin, + ClipMixin { + @override + final String type = 'listView'; + + @override + final bool supportsPadding = true; + + /// The properties of the [ListView]. + ListViewProperties properties; + + /// Creates a [ListViewNode]. + ListViewNode({ + required super.id, + required super.name, + required super.basicBoxLocal, + super.outerBoxLocal, + super.retainedOuterBoxLocal, + super.visible, + super.rotationDegrees, + super.alignment, + super.margin, + super.padding, + super.horizontalFit, + super.verticalFit, + super.flex, + super.constraints, + super.edgePins, + super.aspectRatioLock, + super.positioningMode, + super.parentID, + super.reactions, + required this.properties, + required List children, + Map? variables, + bool clipsContent = true, + // scrollable + AxisC scrollDirection = AxisC.vertical, + bool reverse = false, + ScrollPhysicsC physics = ScrollPhysicsC.alwaysScrollableScrollPhysics, + bool primary = false, + ScrollViewKeyboardDismissBehaviorC keyboardDismissBehavior = + ScrollViewKeyboardDismissBehaviorC.manual, + }) : super(children: [], allowedTypes: [], deniedTypes: []) { + setChildrenMixin(children: children); + setVariablesMixin(variables: variables); + setClipMixin(clipsContent: clipsContent); + + setScrollableMixin( + isScrollable: true, + scrollDirection: scrollDirection, + reverse: reverse, + physics: physics, + primary: primary, + shrinkWrap: false, + keyboardDismissBehavior: keyboardDismissBehavior, + useFlutterListView: true, + ); + } + + /// Creates a [ListViewNode] from a JSON object. + factory ListViewNode.fromJson(Map json) => _$ListViewNodeFromJson(json); + + @override + Map toJson() => _$ListViewNodeToJson(this); + + // @override + // SizeC minimumInternalSize({ + // required SizeFit horizontalFit, + // required SizeFit verticalFit, + // }) { + // if (children.isEmpty || properties.itemCount == null) return SizeC.zero; + // if (properties.itemExtent != null && !properties.hasSeparator) { + // if (scrollDirection.isVertical) { + // return SizeC(0, properties.itemExtent! * properties.itemCount!); + // } else { + // return SizeC(properties.itemExtent! * properties.itemCount!, 0); + // } + // } + // + // // If the scroll direction axis's SizeFit is shrinkwrap. + // final child = nodeDelegate.getNodeByID(children.first); + // if (scrollDirection.isVertical && verticalFit == SizeFit.shrinkWrap) { + // final itemsHeight = child.outerBoxLocal.height * properties.itemCount!; + // final separatorsHeight = properties.hasSeparator + // ? properties.separatorSpacing * (properties.itemCount! - 1) + // : 0; + // return SizeC(0, itemsHeight + separatorsHeight); + // } else if (scrollDirection.isHorizontal && + // horizontalFit == SizeFit.shrinkWrap) { + // final itemsWidth = child.outerBoxLocal.width * properties.itemCount!; + // final separatorsWidth = properties.hasSeparator + // ? properties.separatorSpacing * (properties.itemCount! - 1) + // : 0; + // return SizeC(itemsWidth + separatorsWidth, 0); + // } + // return SizeC.zero; + // } + + AlignmentModel childAlignment() { + switch (scrollDirection) { + case AxisC.horizontal: + return reverse ? AlignmentModel.centerRight : AlignmentModel.centerLeft; + case AxisC.vertical: + return reverse ? AlignmentModel.bottomCenter : AlignmentModel.topCenter; + } + } +} + +enum ListItemSeparator { + divider, + space; +} + +@JsonSerializable() +class ListViewProperties with SerializableMixin, EquatableMixin { + int? itemCount; + double? itemExtent; + double? cacheExtent; + double separatorSpacing; + ListItemSeparator separator; + bool hasSeparator; + DividerProperties dividerProperties; + + ListViewProperties({ + this.itemCount, + this.itemExtent, + this.cacheExtent, + this.separator = ListItemSeparator.space, + this.separatorSpacing = 0, + this.hasSeparator = false, + DividerProperties? dividerProperties, + }) : dividerProperties = dividerProperties ?? DividerProperties(); + + ListViewProperties copyWith({ + int? itemCount, + ScrollPhysicsC? physics, + AxisC? scrollDirection, + double? itemExtent, + double? cacheExtent, + bool? reverse, + ListItemSeparator? separator, + double? separatorSpacing, + double? dividerThickness, + ColorRGBA? dividerColor, + double? dividerSpacing, + bool? hasSeparator, + DividerProperties? dividerProperties, + }) { + return ListViewProperties( + itemCount: itemCount ?? this.itemCount, + itemExtent: itemExtent ?? this.itemExtent, + cacheExtent: cacheExtent ?? this.cacheExtent, + separator: separator ?? this.separator, + separatorSpacing: separatorSpacing ?? this.separatorSpacing, + hasSeparator: hasSeparator ?? this.hasSeparator, + dividerProperties: dividerProperties ?? this.dividerProperties, + ); + } + + @override + Map toJson() => _$ListViewPropertiesToJson(this); + + factory ListViewProperties.fromJson(Map json) => + _$ListViewPropertiesFromJson(json); + + @override + List get props => [ + itemCount, + itemExtent, + cacheExtent, + separator, + separatorSpacing, + hasSeparator, + dividerProperties, + ]; +} diff --git a/lib/src/api/nodes/list_view_node.g.dart b/lib/src/api/nodes/list_view_node.g.dart new file mode 100644 index 0000000..c40094c --- /dev/null +++ b/lib/src/api/nodes/list_view_node.g.dart @@ -0,0 +1,201 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'list_view_node.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +ListViewNode _$ListViewNodeFromJson(Map json) => ListViewNode( + id: json['id'] as String, + name: json['name'] as String, + basicBoxLocal: NodeBox.fromJson(json['basicBoxLocal'] as Map), + outerBoxLocal: json['outerBoxLocal'] == null + ? null + : OuterNodeBox.fromJson(json['outerBoxLocal'] as Map), + visible: json['visible'] as bool? ?? true, + rotationDegrees: + json['rotation'] == null ? 0 : castRotation(json['rotation']), + alignment: json['alignment'] == null + ? AlignmentModel.none + : AlignmentModel.fromJson(json['alignment'] as Map), + margin: json['margin'] == null + ? EdgeInsetsModel.zero + : EdgeInsetsModel.fromJson(json['margin'] as Map), + padding: json['padding'] == null + ? EdgeInsetsModel.zero + : EdgeInsetsModel.fromJson(json['padding'] as Map), + horizontalFit: + $enumDecodeNullable(_$SizeFitEnumMap, json['horizontalFit']) ?? + SizeFit.fixed, + verticalFit: $enumDecodeNullable(_$SizeFitEnumMap, json['verticalFit']) ?? + SizeFit.fixed, + flex: json['flex'] as int? ?? 1, + constraints: json['constraints'] == null + ? const BoxConstraintsModel() + : BoxConstraintsModel.fromJson(json['constraints'] as Map), + edgePins: json['edgePins'] == null + ? EdgePinsModel.standard + : EdgePinsModel.fromJson( + Map.from(json['edgePins'] as Map)), + aspectRatioLock: json['aspectRatioLock'] as bool? ?? false, + positioningMode: $enumDecodeNullable( + _$PositioningModeEnumMap, json['positioningMode']) ?? + PositioningMode.align, + reactions: (json['reactions'] as List?) + ?.map((e) => Reaction.fromJson(e as Map)) + .toList() ?? + const [], + properties: ListViewProperties.fromJson(json['properties'] as Map), + children: + (json['children'] as List).map((e) => e as String).toList(), + variables: (json['variables'] as Map?)?.map( + (k, e) => MapEntry(k as String, e as String), + ) ?? + {}, + clipsContent: json['clipsContent'] as bool? ?? true, + scrollDirection: + $enumDecodeNullable(_$AxisCEnumMap, json['scrollDirection']) ?? + AxisC.vertical, + reverse: json['reverse'] as bool? ?? false, + physics: $enumDecodeNullable(_$ScrollPhysicsCEnumMap, json['physics']) ?? + ScrollPhysicsC.alwaysScrollableScrollPhysics, + primary: json['primary'] as bool? ?? false, + keyboardDismissBehavior: $enumDecodeNullable( + _$ScrollViewKeyboardDismissBehaviorCEnumMap, + json['keyboardDismissBehavior']) ?? + ScrollViewKeyboardDismissBehaviorC.manual, + ) + ..allowedTypes = (json['allowedTypes'] as List) + .map((e) => e as String) + .toList() + ..deniedTypes = (json['deniedTypes'] as List) + .map((e) => e as String) + .toList() + ..maxAllowedSize = json['maxAllowedSize'] == null + ? null + : SizeC.fromJson(json['maxAllowedSize'] as Map) + ..multipleVariables = (json['multipleVariables'] as Map?)?.map( + (k, e) => MapEntry(k as String, + (e as List).map((e) => e as String).toList()), + ) ?? + {} + ..isScrollable = json['isScrollable'] as bool + ..useFlutterListView = json['useFlutterListView'] as bool + ..type = json['type'] as String; + +Map _$ListViewNodeToJson(ListViewNode instance) { + final val = { + 'id': instance.id, + 'name': instance.name, + 'visible': instance.visible, + 'constraints': instance.constraints.toJson(), + 'edgePins': instance.edgePins.toJson(), + 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, + 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, + 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), + 'flex': instance.flex, + 'aspectRatioLock': instance.aspectRatioLock, + 'alignment': instance.alignment.toJson(), + 'outerBoxLocal': instance.outerBoxLocal.toJson(), + 'basicBoxLocal': instance.basicBoxLocal.toJson(), + 'margin': instance.margin.toJson(), + 'padding': instance.padding.toJson(), + 'rotation': instance.rotationDegrees, + 'children': instance.children, + 'clipsContent': instance.clipsContent, + 'allowedTypes': instance.allowedTypes, + 'deniedTypes': instance.deniedTypes, + }; + + void writeNotNull(String key, dynamic value) { + if (value != null) { + val[key] = value; + } + } + + writeNotNull('maxAllowedSize', instance.maxAllowedSize?.toJson()); + val['variables'] = instance.variables; + val['multipleVariables'] = instance.multipleVariables; + val['isScrollable'] = instance.isScrollable; + val['scrollDirection'] = _$AxisCEnumMap[instance.scrollDirection]!; + val['reverse'] = instance.reverse; + val['primary'] = instance.primary; + val['physics'] = _$ScrollPhysicsCEnumMap[instance.physics]!; + val['keyboardDismissBehavior'] = _$ScrollViewKeyboardDismissBehaviorCEnumMap[ + instance.keyboardDismissBehavior]!; + val['useFlutterListView'] = instance.useFlutterListView; + val['type'] = instance.type; + val['properties'] = instance.properties.toJson(); + return val; +} + +const _$SizeFitEnumMap = { + SizeFit.locked: 'locked', + SizeFit.fixed: 'fixed', + SizeFit.expanded: 'expanded', + SizeFit.flexible: 'flexible', + SizeFit.shrinkWrap: 'shrinkWrap', +}; + +const _$PositioningModeEnumMap = { + PositioningMode.align: 'align', + PositioningMode.pin: 'pin', +}; + +const _$AxisCEnumMap = { + AxisC.horizontal: 'horizontal', + AxisC.vertical: 'vertical', +}; + +const _$ScrollPhysicsCEnumMap = { + ScrollPhysicsC.alwaysScrollableScrollPhysics: 'alwaysScrollableScrollPhysics', + ScrollPhysicsC.bouncingScrollPhysics: 'bouncingScrollPhysics', + ScrollPhysicsC.clampingScrollPhysics: 'clampingScrollPhysics', + ScrollPhysicsC.neverScrollableScrollPhysics: 'neverScrollableScrollPhysics', + ScrollPhysicsC.rangeMaintainingScrollPhysics: 'rangeMaintainingScrollPhysics', +}; + +const _$ScrollViewKeyboardDismissBehaviorCEnumMap = { + ScrollViewKeyboardDismissBehaviorC.manual: 'manual', + ScrollViewKeyboardDismissBehaviorC.onDrag: 'onDrag', +}; + +ListViewProperties _$ListViewPropertiesFromJson(Map json) => ListViewProperties( + itemCount: json['itemCount'] as int?, + itemExtent: (json['itemExtent'] as num?)?.toDouble(), + cacheExtent: (json['cacheExtent'] as num?)?.toDouble(), + separator: + $enumDecodeNullable(_$ListItemSeparatorEnumMap, json['separator']) ?? + ListItemSeparator.space, + separatorSpacing: (json['separatorSpacing'] as num?)?.toDouble() ?? 0, + hasSeparator: json['hasSeparator'] as bool? ?? false, + dividerProperties: json['dividerProperties'] == null + ? null + : DividerProperties.fromJson(json['dividerProperties'] as Map), + ); + +Map _$ListViewPropertiesToJson(ListViewProperties instance) { + final val = {}; + + void writeNotNull(String key, dynamic value) { + if (value != null) { + val[key] = value; + } + } + + writeNotNull('itemCount', instance.itemCount); + writeNotNull('itemExtent', instance.itemExtent); + writeNotNull('cacheExtent', instance.cacheExtent); + val['separatorSpacing'] = instance.separatorSpacing; + val['separator'] = _$ListItemSeparatorEnumMap[instance.separator]!; + val['hasSeparator'] = instance.hasSeparator; + val['dividerProperties'] = instance.dividerProperties.toJson(); + return val; +} + +const _$ListItemSeparatorEnumMap = { + ListItemSeparator.divider: 'divider', + ListItemSeparator.space: 'space', +}; diff --git a/lib/src/api/nodes/nodes.dart b/lib/src/api/nodes/nodes.dart index 1fc6fac..fc35855 100644 --- a/lib/src/api/nodes/nodes.dart +++ b/lib/src/api/nodes/nodes.dart @@ -33,7 +33,8 @@ export 'switch_node.dart'; export 'text_field_node.dart'; export 'text_node.dart'; export 'variance_node.dart'; -export 'webview_google_maps_properties.dart'; -export 'webview_node.dart'; -export 'webview_twitter_properties.dart'; +export 'web_view_google_maps_properties.dart'; +export 'web_view_node.dart'; +export 'web_view_twitter_properties.dart'; export 'base_node.dart'; +export 'list_view_node.dart'; \ No newline at end of file diff --git a/lib/src/api/nodes/webview_google_maps_properties.dart b/lib/src/api/nodes/web_view_google_maps_properties.dart similarity index 83% rename from lib/src/api/nodes/webview_google_maps_properties.dart rename to lib/src/api/nodes/web_view_google_maps_properties.dart index 690f30c..74e324b 100644 --- a/lib/src/api/nodes/webview_google_maps_properties.dart +++ b/lib/src/api/nodes/web_view_google_maps_properties.dart @@ -5,24 +5,24 @@ import 'package:json_annotation/json_annotation.dart'; import '../models/models.dart'; -import 'webview_node.dart'; +import 'web_view_node.dart'; -part 'webview_google_maps_properties.g.dart'; +part 'web_view_google_maps_properties.g.dart'; -/// A [WebviewProperties] implementation that displays a Google Maps webview. +/// A [WebViewProperties] implementation that displays a Google Maps webview. /// -/// There are multiple kinds of [GoogleMapsWebviewProperties], which is why +/// There are multiple kinds of [GoogleMapsWebViewProperties], which is why /// this class is abstract and provides a base for all of them. /// -/// See: [PlacesGoogleMapsWebviewProperties], [ViewGoogleMapsWebviewProperties], -/// [DirectionsGoogleMapsWebviewProperties], -/// [StreetViewGoogleMapsWebviewProperties], and -/// [SearchGoogleMapsWebviewProperties]. -abstract class GoogleMapsWebviewProperties extends WebviewProperties { +/// See: [PlacesGoogleMapsWebViewProperties], [ViewGoogleMapsWebViewProperties], +/// [DirectionsGoogleMapsWebViewProperties], +/// [StreetViewGoogleMapsWebViewProperties], and +/// [SearchGoogleMapsWebViewProperties]. +abstract class GoogleMapsWebViewProperties extends WebViewProperties { /// The API key from the Google Cloud Platform Console. /// /// This is required for all types and sub-types of - /// [GoogleMapsWebviewProperties]. + /// [GoogleMapsWebViewProperties]. String? apiKey; /// Sets initial zoom level of the map. @@ -56,15 +56,15 @@ abstract class GoogleMapsWebviewProperties extends WebviewProperties { String? region; @override - late WebviewType webviewType = WebviewType.googleMaps; + late WebViewType webviewType = WebViewType.googleMaps; @override @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps'; /// The map mode that helps disambiguate what kind of map is being displayed. - /// This is used to determine which sub-type of [GoogleMapsWebviewProperties] - /// a common [GoogleMapsWebviewProperties] instance should or can be casted + /// This is used to determine which sub-type of [GoogleMapsWebViewProperties] + /// a common [GoogleMapsWebViewProperties] instance should or can be casted /// to. late GoogleMapsMapMode mapMode; @@ -75,8 +75,8 @@ abstract class GoogleMapsWebviewProperties extends WebviewProperties { /// field. late String url; - /// Creates a new [GoogleMapsWebviewProperties] instance given an [apiKey]. - GoogleMapsWebviewProperties({ + /// Creates a new [GoogleMapsWebViewProperties] instance given an [apiKey]. + GoogleMapsWebViewProperties({ required this.apiKey, this.zoom, this.mapType, @@ -94,27 +94,27 @@ abstract class GoogleMapsWebviewProperties extends WebviewProperties { super.backgroundColor, }); - /// Creates a new [GoogleMapsWebviewProperties] instance from a [json] map. + /// Creates a new [GoogleMapsWebViewProperties] instance from a [json] map. /// /// The [mapMode] is checked manually in order to return the most appropriate - /// sub-type of [GoogleMapsWebviewProperties] instance. + /// sub-type of [GoogleMapsWebViewProperties] instance. /// /// TODO: This function is not extendable. If a new type of - /// [GoogleMapsWebviewProperties] is added, this function will need to be + /// [GoogleMapsWebViewProperties] is added, this function will need to be /// updated manually and it inherently disallows any third-party plugins to - /// add their own types of [GoogleMapsWebviewProperties]. - factory GoogleMapsWebviewProperties.fromJson(Map json) { + /// add their own types of [GoogleMapsWebViewProperties]. + factory GoogleMapsWebViewProperties.fromJson(Map json) { switch (GoogleMapsMapMode.values.byName(json['mapMode'])) { case GoogleMapsMapMode.places: - return PlacesGoogleMapsWebviewProperties.fromJson(json); + return PlacesGoogleMapsWebViewProperties.fromJson(json); case GoogleMapsMapMode.view: - return ViewGoogleMapsWebviewProperties.fromJson(json); + return ViewGoogleMapsWebViewProperties.fromJson(json); case GoogleMapsMapMode.directions: - return DirectionsGoogleMapsWebviewProperties.fromJson(json); + return DirectionsGoogleMapsWebViewProperties.fromJson(json); case GoogleMapsMapMode.streetView: - return StreetViewGoogleMapsWebviewProperties.fromJson(json); + return StreetViewGoogleMapsWebViewProperties.fromJson(json); case GoogleMapsMapMode.search: - return SearchGoogleMapsWebviewProperties.fromJson(json); + return SearchGoogleMapsWebViewProperties.fromJson(json); } } @@ -148,7 +148,7 @@ abstract class GoogleMapsWebviewProperties extends WebviewProperties { /// /// Refer to: https://developers.google.com/maps/documentation/embed/embedding-map#place_mode @JsonSerializable() -class PlacesGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { +class PlacesGoogleMapsWebViewProperties extends GoogleMapsWebViewProperties { /// Defines map marker location. /// /// URL-escaped place name, address, plus code, or place ID. @@ -164,9 +164,9 @@ class PlacesGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps - Places'; - /// Creates a new [PlacesGoogleMapsWebviewProperties] instance given an + /// Creates a new [PlacesGoogleMapsWebViewProperties] instance given an /// [apiKey] and a [query]. - PlacesGoogleMapsWebviewProperties({ + PlacesGoogleMapsWebViewProperties({ required super.apiKey, required this.query, super.zoom, @@ -208,12 +208,12 @@ class PlacesGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { } @override - Map toJson() => _$PlacesGoogleMapsWebviewPropertiesToJson(this); + Map toJson() => _$PlacesGoogleMapsWebViewPropertiesToJson(this); - /// Creates a new [PlacesGoogleMapsWebviewProperties] instance from a [json] + /// Creates a new [PlacesGoogleMapsWebViewProperties] instance from a [json] /// map. - factory PlacesGoogleMapsWebviewProperties.fromJson(Map json) => - _$PlacesGoogleMapsWebviewPropertiesFromJson(json); + factory PlacesGoogleMapsWebViewProperties.fromJson(Map json) => + _$PlacesGoogleMapsWebViewPropertiesFromJson(json); @override List get props => [ @@ -230,7 +230,7 @@ class PlacesGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { /// /// Refer to: https://developers.google.com/maps/documentation/embed/embedding-map#view_mode @JsonSerializable() -class ViewGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { +class ViewGoogleMapsWebViewProperties extends GoogleMapsWebViewProperties { /// Defines center of the map view. /// /// Accepts comma-separated latitude and longitude value; @@ -244,9 +244,9 @@ class ViewGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps - View'; - /// Creates a new [ViewGoogleMapsWebviewProperties] instance given an + /// Creates a new [ViewGoogleMapsWebViewProperties] instance given an /// [apiKey] and a [center]. - ViewGoogleMapsWebviewProperties({ + ViewGoogleMapsWebViewProperties({ required super.apiKey, required this.center, super.zoom, @@ -288,12 +288,12 @@ class ViewGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { } @override - Map toJson() => _$ViewGoogleMapsWebviewPropertiesToJson(this); + Map toJson() => _$ViewGoogleMapsWebViewPropertiesToJson(this); - /// Creates a new [ViewGoogleMapsWebviewProperties] instance from a [json] + /// Creates a new [ViewGoogleMapsWebViewProperties] instance from a [json] /// map. - factory ViewGoogleMapsWebviewProperties.fromJson(Map json) => - _$ViewGoogleMapsWebviewPropertiesFromJson(json); + factory ViewGoogleMapsWebViewProperties.fromJson(Map json) => + _$ViewGoogleMapsWebViewPropertiesFromJson(json); @override List get props => [ @@ -310,8 +310,8 @@ class ViewGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { /// /// Refer to: https://developers.google.com/maps/documentation/embed/embedding-map#directions_mode @JsonSerializable() -class DirectionsGoogleMapsWebviewProperties - extends GoogleMapsWebviewProperties { +class DirectionsGoogleMapsWebViewProperties + extends GoogleMapsWebViewProperties { /// Defines the starting point from which to display directions. /// /// URL-escaped place name, address, plus code, latitude/longitude @@ -374,9 +374,9 @@ class DirectionsGoogleMapsWebviewProperties @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps - Directions'; - /// Creates a new [DirectionsGoogleMapsWebviewProperties] instance given an + /// Creates a new [DirectionsGoogleMapsWebViewProperties] instance given an /// [apiKey], an [origin], a [destination], [waypoints], and an [avoid] set. - DirectionsGoogleMapsWebviewProperties({ + DirectionsGoogleMapsWebViewProperties({ required super.apiKey, required this.origin, required this.destination, @@ -446,12 +446,12 @@ class DirectionsGoogleMapsWebviewProperties } @override - Map toJson() => _$DirectionsGoogleMapsWebviewPropertiesToJson(this); + Map toJson() => _$DirectionsGoogleMapsWebViewPropertiesToJson(this); - /// Creates a new [DirectionsGoogleMapsWebviewProperties] instance from a + /// Creates a new [DirectionsGoogleMapsWebViewProperties] instance from a /// [json] map. - factory DirectionsGoogleMapsWebviewProperties.fromJson(Map json) => - _$DirectionsGoogleMapsWebviewPropertiesFromJson(json); + factory DirectionsGoogleMapsWebViewProperties.fromJson(Map json) => + _$DirectionsGoogleMapsWebViewPropertiesFromJson(json); @override List get props => [ @@ -469,8 +469,8 @@ class DirectionsGoogleMapsWebviewProperties /// /// Refer to: https://developers.google.com/maps/documentation/embed/embedding-map#streetview_mode @JsonSerializable() -class StreetViewGoogleMapsWebviewProperties - extends GoogleMapsWebviewProperties { +class StreetViewGoogleMapsWebViewProperties + extends GoogleMapsWebViewProperties { /// location accepts a latitude and a longitude as comma-separated /// values (46.414382,10.013988). The API will display the panorama /// photographed closest to this location. @@ -524,10 +524,10 @@ class StreetViewGoogleMapsWebviewProperties @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps - Street View'; - /// Creates a new [StreetViewGoogleMapsWebviewProperties] instance given an + /// Creates a new [StreetViewGoogleMapsWebViewProperties] instance given an /// [apiKey] and optionally a [location], [pano], [heading], [pitch], [fov], /// or [center]. - StreetViewGoogleMapsWebviewProperties({ + StreetViewGoogleMapsWebViewProperties({ required super.apiKey, this.location, this.pano, @@ -600,12 +600,12 @@ class StreetViewGoogleMapsWebviewProperties } @override - Map toJson() => _$StreetViewGoogleMapsWebviewPropertiesToJson(this); + Map toJson() => _$StreetViewGoogleMapsWebViewPropertiesToJson(this); - /// Creates a new [StreetViewGoogleMapsWebviewProperties] instance from a + /// Creates a new [StreetViewGoogleMapsWebViewProperties] instance from a /// [json] map. - factory StreetViewGoogleMapsWebviewProperties.fromJson(Map json) => - _$StreetViewGoogleMapsWebviewPropertiesFromJson(json); + factory StreetViewGoogleMapsWebViewProperties.fromJson(Map json) => + _$StreetViewGoogleMapsWebViewPropertiesFromJson(json); @override List get props => [ @@ -625,7 +625,7 @@ class StreetViewGoogleMapsWebviewProperties /// /// Refer to: https://developers.google.com/maps/documentation/embed/embedding-map#search_mode @JsonSerializable() -class SearchGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { +class SearchGoogleMapsWebViewProperties extends GoogleMapsWebViewProperties { /// Defines the search term. /// /// It can include a geographic restriction, such as in+Seattle or near+98033. @@ -638,9 +638,9 @@ class SearchGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Google Maps - Search'; - /// Creates a new [SearchGoogleMapsWebviewProperties] instance given an + /// Creates a new [SearchGoogleMapsWebViewProperties] instance given an /// [apiKey] and a [query]. - SearchGoogleMapsWebviewProperties({ + SearchGoogleMapsWebViewProperties({ required super.apiKey, required this.query, super.zoom, @@ -683,12 +683,12 @@ class SearchGoogleMapsWebviewProperties extends GoogleMapsWebviewProperties { } @override - Map toJson() => _$SearchGoogleMapsWebviewPropertiesToJson(this); + Map toJson() => _$SearchGoogleMapsWebViewPropertiesToJson(this); - /// Creates a new [SearchGoogleMapsWebviewProperties] instance from a + /// Creates a new [SearchGoogleMapsWebViewProperties] instance from a /// [json] map. - factory SearchGoogleMapsWebviewProperties.fromJson(Map json) => - _$SearchGoogleMapsWebviewPropertiesFromJson(json); + factory SearchGoogleMapsWebViewProperties.fromJson(Map json) => + _$SearchGoogleMapsWebViewPropertiesFromJson(json); @override List get props => [ diff --git a/lib/src/api/nodes/webview_google_maps_properties.g.dart b/lib/src/api/nodes/web_view_google_maps_properties.g.dart similarity index 84% rename from lib/src/api/nodes/webview_google_maps_properties.g.dart rename to lib/src/api/nodes/web_view_google_maps_properties.g.dart index 0b5c39e..5f05a37 100644 --- a/lib/src/api/nodes/webview_google_maps_properties.g.dart +++ b/lib/src/api/nodes/web_view_google_maps_properties.g.dart @@ -1,14 +1,14 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'webview_google_maps_properties.dart'; +part of 'web_view_google_maps_properties.dart'; // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** -PlacesGoogleMapsWebviewProperties _$PlacesGoogleMapsWebviewPropertiesFromJson( +PlacesGoogleMapsWebViewProperties _$PlacesGoogleMapsWebViewPropertiesFromJson( Map json) => - PlacesGoogleMapsWebviewProperties( + PlacesGoogleMapsWebViewProperties( apiKey: json['apiKey'] as String?, query: json['query'] as String, zoom: json['zoom'] as int?, @@ -25,21 +25,21 @@ PlacesGoogleMapsWebviewProperties _$PlacesGoogleMapsWebviewPropertiesFromJson( controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..url = json['url'] as String ..mapMode = $enumDecode(_$GoogleMapsMapModeEnumMap, json['mapMode']); -Map _$PlacesGoogleMapsWebviewPropertiesToJson( - PlacesGoogleMapsWebviewProperties instance) { +Map _$PlacesGoogleMapsWebViewPropertiesToJson( + PlacesGoogleMapsWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -58,7 +58,7 @@ Map _$PlacesGoogleMapsWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('apiKey', instance.apiKey); @@ -66,7 +66,7 @@ Map _$PlacesGoogleMapsWebviewPropertiesToJson( writeNotNull('mapType', _$GoogleMapsMapTypeEnumMap[instance.mapType]); writeNotNull('language', instance.language); writeNotNull('region', instance.region); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['url'] = instance.url; val['query'] = instance.query; val['mapMode'] = _$GoogleMapsMapModeEnumMap[instance.mapMode]!; @@ -78,10 +78,10 @@ const _$GoogleMapsMapTypeEnumMap = { GoogleMapsMapType.satellite: 'satellite', }; -const _$WebviewMediaAutoPlaybackPolicyEnumMap = { - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: +const _$WebViewMediaAutoPlaybackPolicyEnumMap = { + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: 'requireUserActionForAllMedia', - WebviewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', + WebViewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', }; Value? _$JsonConverterFromJson( @@ -90,10 +90,10 @@ Value? _$JsonConverterFromJson( ) => json == null ? null : fromJson(json as Json); -const _$WebviewTypeEnumMap = { - WebviewType.webpage: 'webpage', - WebviewType.googleMaps: 'googleMaps', - WebviewType.twitter: 'twitter', +const _$WebViewTypeEnumMap = { + WebViewType.webpage: 'webpage', + WebViewType.googleMaps: 'googleMaps', + WebViewType.twitter: 'twitter', }; const _$GoogleMapsMapModeEnumMap = { @@ -104,9 +104,9 @@ const _$GoogleMapsMapModeEnumMap = { GoogleMapsMapMode.search: 'search', }; -ViewGoogleMapsWebviewProperties _$ViewGoogleMapsWebviewPropertiesFromJson( +ViewGoogleMapsWebViewProperties _$ViewGoogleMapsWebViewPropertiesFromJson( Map json) => - ViewGoogleMapsWebviewProperties( + ViewGoogleMapsWebViewProperties( apiKey: json['apiKey'] as String?, center: Vec.fromJson(json['center'] as Map), zoom: json['zoom'] as int?, @@ -123,21 +123,21 @@ ViewGoogleMapsWebviewProperties _$ViewGoogleMapsWebviewPropertiesFromJson( controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..url = json['url'] as String ..mapMode = $enumDecode(_$GoogleMapsMapModeEnumMap, json['mapMode']); -Map _$ViewGoogleMapsWebviewPropertiesToJson( - ViewGoogleMapsWebviewProperties instance) { +Map _$ViewGoogleMapsWebViewPropertiesToJson( + ViewGoogleMapsWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -156,7 +156,7 @@ Map _$ViewGoogleMapsWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('apiKey', instance.apiKey); @@ -164,16 +164,16 @@ Map _$ViewGoogleMapsWebviewPropertiesToJson( writeNotNull('mapType', _$GoogleMapsMapTypeEnumMap[instance.mapType]); writeNotNull('language', instance.language); writeNotNull('region', instance.region); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['url'] = instance.url; val['center'] = instance.center.toJson(); val['mapMode'] = _$GoogleMapsMapModeEnumMap[instance.mapMode]!; return val; } -DirectionsGoogleMapsWebviewProperties - _$DirectionsGoogleMapsWebviewPropertiesFromJson(Map json) => - DirectionsGoogleMapsWebviewProperties( +DirectionsGoogleMapsWebViewProperties + _$DirectionsGoogleMapsWebViewPropertiesFromJson(Map json) => + DirectionsGoogleMapsWebViewProperties( apiKey: json['apiKey'] as String?, origin: json['origin'] as String, destination: json['destination'] as String, @@ -204,21 +204,21 @@ DirectionsGoogleMapsWebviewProperties controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..url = json['url'] as String ..mapMode = $enumDecode(_$GoogleMapsMapModeEnumMap, json['mapMode']); -Map _$DirectionsGoogleMapsWebviewPropertiesToJson( - DirectionsGoogleMapsWebviewProperties instance) { +Map _$DirectionsGoogleMapsWebViewPropertiesToJson( + DirectionsGoogleMapsWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -237,7 +237,7 @@ Map _$DirectionsGoogleMapsWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('apiKey', instance.apiKey); @@ -245,7 +245,7 @@ Map _$DirectionsGoogleMapsWebviewPropertiesToJson( writeNotNull('mapType', _$GoogleMapsMapTypeEnumMap[instance.mapType]); writeNotNull('language', instance.language); writeNotNull('region', instance.region); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['url'] = instance.url; val['origin'] = instance.origin; val['destination'] = instance.destination; @@ -279,9 +279,9 @@ const _$UnitSystemEnumMap = { UnitSystem.imperial: 'imperial', }; -StreetViewGoogleMapsWebviewProperties - _$StreetViewGoogleMapsWebviewPropertiesFromJson(Map json) => - StreetViewGoogleMapsWebviewProperties( +StreetViewGoogleMapsWebViewProperties + _$StreetViewGoogleMapsWebViewPropertiesFromJson(Map json) => + StreetViewGoogleMapsWebViewProperties( apiKey: json['apiKey'] as String?, location: json['location'] == null ? null @@ -308,21 +308,21 @@ StreetViewGoogleMapsWebviewProperties controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..url = json['url'] as String ..mapMode = $enumDecode(_$GoogleMapsMapModeEnumMap, json['mapMode']); -Map _$StreetViewGoogleMapsWebviewPropertiesToJson( - StreetViewGoogleMapsWebviewProperties instance) { +Map _$StreetViewGoogleMapsWebViewPropertiesToJson( + StreetViewGoogleMapsWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -341,7 +341,7 @@ Map _$StreetViewGoogleMapsWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('apiKey', instance.apiKey); @@ -349,7 +349,7 @@ Map _$StreetViewGoogleMapsWebviewPropertiesToJson( writeNotNull('mapType', _$GoogleMapsMapTypeEnumMap[instance.mapType]); writeNotNull('language', instance.language); writeNotNull('region', instance.region); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['url'] = instance.url; writeNotNull('location', instance.location?.toJson()); writeNotNull('pano', instance.pano); @@ -361,9 +361,9 @@ Map _$StreetViewGoogleMapsWebviewPropertiesToJson( return val; } -SearchGoogleMapsWebviewProperties _$SearchGoogleMapsWebviewPropertiesFromJson( +SearchGoogleMapsWebViewProperties _$SearchGoogleMapsWebViewPropertiesFromJson( Map json) => - SearchGoogleMapsWebviewProperties( + SearchGoogleMapsWebViewProperties( apiKey: json['apiKey'] as String?, query: json['query'] as String, zoom: json['zoom'] as int?, @@ -380,21 +380,21 @@ SearchGoogleMapsWebviewProperties _$SearchGoogleMapsWebviewPropertiesFromJson( controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..url = json['url'] as String ..mapMode = $enumDecode(_$GoogleMapsMapModeEnumMap, json['mapMode']); -Map _$SearchGoogleMapsWebviewPropertiesToJson( - SearchGoogleMapsWebviewProperties instance) { +Map _$SearchGoogleMapsWebViewPropertiesToJson( + SearchGoogleMapsWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -413,7 +413,7 @@ Map _$SearchGoogleMapsWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('apiKey', instance.apiKey); @@ -421,7 +421,7 @@ Map _$SearchGoogleMapsWebviewPropertiesToJson( writeNotNull('mapType', _$GoogleMapsMapTypeEnumMap[instance.mapType]); writeNotNull('language', instance.language); writeNotNull('region', instance.region); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['url'] = instance.url; val['query'] = instance.query; val['mapMode'] = _$GoogleMapsMapModeEnumMap[instance.mapMode]!; diff --git a/lib/src/api/nodes/webview_node.dart b/lib/src/api/nodes/web_view_node.dart similarity index 77% rename from lib/src/api/nodes/webview_node.dart rename to lib/src/api/nodes/web_view_node.dart index 7008460..4be15cb 100644 --- a/lib/src/api/nodes/webview_node.dart +++ b/lib/src/api/nodes/web_view_node.dart @@ -11,31 +11,31 @@ import '../mixins.dart'; import '../models/models.dart'; import 'nodes.dart'; -part 'webview_node.g.dart'; +part 'web_view_node.g.dart'; -/// A Webview is a rectangle that displays or embeds a web page or web element. +/// A WebView is a rectangle that displays or embeds a web page or web element. /// /// It is only available on Android and iOS. /// /// This node utilizes the webview_flutter package. @JsonSerializable() -class WebviewNode extends SceneNode +class WebViewNode extends SceneNode with CustomPropertiesMixin, VariablePropertiesMixin { @override - final String type = 'webview'; + final String type = 'webView'; /// Accesses the properties of the webview. There are multiple versions of - /// webview properties, [WebPageWebviewProperties], - /// [TwitterWebviewProperties], and [GoogleMapsWebviewProperties]. - WebviewProperties properties; + /// webview properties, [WebPageWebViewProperties], + /// [TwitterWebViewProperties], and [GoogleMapsWebViewProperties]. + WebViewProperties properties; /// [returns] whether this webview holds actual content in its - /// [WebviewProperties.src]. + /// [WebViewProperties.src]. bool get hasData => properties.src != null && properties.src!.trim().isNotEmpty; - /// Creates a new [WebviewNode] instance given the required parameters. - WebviewNode({ + /// Creates a new [WebViewNode] instance given the required parameters. + WebViewNode({ required super.id, required super.name, required super.basicBoxLocal, @@ -62,14 +62,14 @@ class WebviewNode extends SceneNode setVariablesMixin(variables: variables); } - /// Creates a new [WebviewNode] instance from a [json] map. - factory WebviewNode.fromJson(Map json) => _$WebviewNodeFromJson(json); + /// Creates a new [WebViewNode] instance from a [json] map. + factory WebViewNode.fromJson(Map json) => _$WebViewNodeFromJson(json); @override - Map toJson() => _$WebviewNodeToJson(this); + Map toJson() => _$WebViewNodeToJson(this); } -/// A custom serializer and deserializer for the [WebviewProperties.src] field +/// A custom serializer and deserializer for the [WebViewProperties.src] field /// to encode and decode the src to and from a base64 string. /// /// The [src] can be a URL, an actual HTML string, etc... So we serialize @@ -87,24 +87,24 @@ class Base64JsonConverter implements JsonConverter { base64.encode(utf8.encode(decodedString ?? '')); } -/// An abstract class that holds the common properties that any [WebviewNode] +/// An abstract class that holds the common properties that any [WebViewNode] /// can have. /// /// There are three classes that implement this class: -/// [WebPageWebviewProperties], [TwitterWebviewProperties], and -/// [GoogleMapsWebviewProperties]. -abstract class WebviewProperties with SerializableMixin, EquatableMixin { +/// [WebPageWebViewProperties], [TwitterWebViewProperties], and +/// [GoogleMapsWebViewProperties]. +abstract class WebViewProperties with SerializableMixin, EquatableMixin { /// The [src] holds the actual content of the webview. It can be either a URL, /// an actual HTML string, an asset path, etc... @Base64JsonConverter() String? src; - /// The type of webview this instance of [WebviewProperties] is. - late WebviewType webviewType; + /// The type of webview this instance of [WebViewProperties] is. + late WebViewType webviewType; - /// A human-readable label that represents this type of [WebviewProperties]. + /// A human-readable label that represents this type of [WebViewProperties]. @JsonKey(includeFromJson: false, includeToJson: false) - late String label = 'Webview'; + late String label = 'WebView'; /// Whether this webview should consume any vertical scroll gestures. /// @@ -139,7 +139,7 @@ abstract class WebviewProperties with SerializableMixin, EquatableMixin { /// scaling gestures into it and disallow parent containers from zooming/ /// scaling when the event is triggered inside the bounds of this webview. /// - /// This is most evident inside [GoogleMapsWebviewProperties] where the + /// This is most evident inside [GoogleMapsWebViewProperties] where the /// webview is zoomable/scalable. bool? controlScaleGesture; @@ -188,7 +188,7 @@ abstract class WebviewProperties with SerializableMixin, EquatableMixin { /// Media auto playback policy is used to control whether HTML5 media /// (audio/video) should automatically start playing when the webview is /// loaded. - WebviewMediaAutoPlaybackPolicy mediaAutoPlaybackPolicy; + WebViewMediaAutoPlaybackPolicy mediaAutoPlaybackPolicy; /// The background color of the webview is the color that will be shown /// behind the webview content. This is the web-engine rendered background @@ -200,8 +200,8 @@ abstract class WebviewProperties with SerializableMixin, EquatableMixin { /// background color is shown until the webpage is loaded. ColorRGBA? backgroundColor; - /// Creates a new [WebviewProperties] instance. - WebviewProperties({ + /// Creates a new [WebViewProperties] instance. + WebViewProperties({ this.src, this.controlVerticalScrollGesture, this.controlHorizontalScrollGesture, @@ -211,44 +211,44 @@ abstract class WebviewProperties with SerializableMixin, EquatableMixin { this.controlForcePressGesture, this.allowsInlineMediaPlayback, this.mediaAutoPlaybackPolicy = - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, this.backgroundColor, }); /// Regenerates the [src] field in whatever way is desired. Some webviews /// need extremely specific [src] to work properly. /// - /// See: [TwitterWebviewProperties] and [GoogleMapsWebviewProperties]. + /// See: [TwitterWebViewProperties] and [GoogleMapsWebViewProperties]. void regenSource(); - /// Creates a new [WebviewProperties] instance from a [json] map. + /// Creates a new [WebViewProperties] instance from a [json] map. /// /// The [webviewType] is checked manually in order to return the most - /// appropriate type of [WebviewProperties] instance. + /// appropriate type of [WebViewProperties] instance. /// /// TODO: This function is not extendable. If a new type of - /// [WebviewProperties] is added, this function will need to be updated + /// [WebViewProperties] is added, this function will need to be updated /// manually and it inherently disallows any third-party plugins to add - /// their own [WebviewProperties] types. - factory WebviewProperties.fromJson(Map json) { - switch (WebviewType.values.byName(json['webviewType'])) { - case WebviewType.webpage: - return WebPageWebviewProperties.fromJson(json); - case WebviewType.googleMaps: - return GoogleMapsWebviewProperties.fromJson(json); - case WebviewType.twitter: - return TwitterWebviewProperties.fromJson(json); + /// their own [WebViewProperties] types. + factory WebViewProperties.fromJson(Map json) { + switch (WebViewType.values.byName(json['webviewType'])) { + case WebViewType.webpage: + return WebPageWebViewProperties.fromJson(json); + case WebViewType.googleMaps: + return GoogleMapsWebViewProperties.fromJson(json); + case WebViewType.twitter: + return TwitterWebViewProperties.fromJson(json); } } /// This is not a normal copy function. This specifically copies the base - /// fields inside this abstract [WebviewProperties] instance from [other] - /// into this instance of [WebviewProperties]. + /// fields inside this abstract [WebViewProperties] instance from [other] + /// into this instance of [WebViewProperties]. /// /// It only copies the "base" properties, IE: the properties that are - /// common to all [WebviewProperties] types ONLY, the ones in THIS specific + /// common to all [WebViewProperties] types ONLY, the ones in THIS specific /// abstract class. - void copyBase(WebviewProperties other) { + void copyBase(WebViewProperties other) { controlVerticalScrollGesture = other.controlVerticalScrollGesture; controlHorizontalScrollGesture = other.controlHorizontalScrollGesture; controlScaleGesture = other.controlScaleGesture; @@ -264,17 +264,17 @@ abstract class WebviewProperties with SerializableMixin, EquatableMixin { List get props => [src]; } -/// A [WebviewProperties] implementation that is used to display a webpage +/// A [WebViewProperties] implementation that is used to display a webpage /// given an appropriate input. @JsonSerializable() -class WebPageWebviewProperties extends WebviewProperties { +class WebPageWebViewProperties extends WebViewProperties { /// The source of the webpage to be displayed. This can be a URL, an /// HTML string, or a file path from the assets folder. /// /// This field is required as it disambiguates user intent. Even if it's /// unused for the webview itself, it provides rich information to us as /// developers and allows us to build better UI/UX experiences. - WebviewWebpageSourceType pageSourceType; + WebViewWebpageSourceType pageSourceType; /// Can be a URL, an HTML string, or an asset path. /// @@ -283,14 +283,14 @@ class WebPageWebviewProperties extends WebviewProperties { String input; @override - late WebviewType webviewType = WebviewType.webpage; + late WebViewType webviewType = WebViewType.webpage; @override late String label = 'Webpage'; - /// Creates a new [WebPageWebviewProperties] instance given a [pageSourceType] + /// Creates a new [WebPageWebViewProperties] instance given a [pageSourceType] /// and an [input]. - WebPageWebviewProperties({ + WebPageWebViewProperties({ required this.pageSourceType, required this.input, // inherited @@ -315,11 +315,11 @@ class WebPageWebviewProperties extends WebviewProperties { } @override - Map toJson() => _$WebPageWebviewPropertiesToJson(this); + Map toJson() => _$WebPageWebViewPropertiesToJson(this); - /// Creates a new [WebPageWebviewProperties] instance from a [json] map. - factory WebPageWebviewProperties.fromJson(Map json) => - _$WebPageWebviewPropertiesFromJson(json); + /// Creates a new [WebPageWebViewProperties] instance from a [json] map. + factory WebPageWebViewProperties.fromJson(Map json) => + _$WebPageWebViewPropertiesFromJson(json); @override List get props => [pageSourceType, src]; diff --git a/lib/src/api/nodes/webview_node.g.dart b/lib/src/api/nodes/web_view_node.g.dart similarity index 81% rename from lib/src/api/nodes/webview_node.g.dart rename to lib/src/api/nodes/web_view_node.g.dart index ba1cce3..3ce0d70 100644 --- a/lib/src/api/nodes/webview_node.g.dart +++ b/lib/src/api/nodes/web_view_node.g.dart @@ -1,12 +1,12 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'webview_node.dart'; +part of 'web_view_node.dart'; // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** -WebviewNode _$WebviewNodeFromJson(Map json) => WebviewNode( +WebViewNode _$WebViewNodeFromJson(Map json) => WebViewNode( id: json['id'] as String, name: json['name'] as String, basicBoxLocal: NodeBox.fromJson(json['basicBoxLocal'] as Map), @@ -46,7 +46,7 @@ WebviewNode _$WebviewNodeFromJson(Map json) => WebviewNode( ? EdgePinsModel.standard : EdgePinsModel.fromJson( Map.from(json['edgePins'] as Map)), - properties: WebviewProperties.fromJson(json['properties'] as Map), + properties: WebViewProperties.fromJson(json['properties'] as Map), variables: (json['variables'] as Map?)?.map( (k, e) => MapEntry(k as String, e as String), ) ?? @@ -59,7 +59,7 @@ WebviewNode _$WebviewNodeFromJson(Map json) => WebviewNode( {} ..type = json['type'] as String; -Map _$WebviewNodeToJson(WebviewNode instance) => +Map _$WebViewNodeToJson(WebViewNode instance) => { 'id': instance.id, 'name': instance.name, @@ -97,10 +97,10 @@ const _$PositioningModeEnumMap = { PositioningMode.pin: 'pin', }; -WebPageWebviewProperties _$WebPageWebviewPropertiesFromJson(Map json) => - WebPageWebviewProperties( +WebPageWebViewProperties _$WebPageWebViewPropertiesFromJson(Map json) => + WebPageWebViewProperties( pageSourceType: $enumDecode( - _$WebviewWebpageSourceTypeEnumMap, json['pageSourceType']), + _$WebViewWebpageSourceTypeEnumMap, json['pageSourceType']), input: json['input'] as String, controlVerticalScrollGesture: json['controlVerticalScrollGesture'] as bool?, @@ -112,19 +112,19 @@ WebPageWebviewProperties _$WebPageWebviewPropertiesFromJson(Map json) => controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']); + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']); -Map _$WebPageWebviewPropertiesToJson( - WebPageWebviewProperties instance) { +Map _$WebPageWebViewPropertiesToJson( + WebPageWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -143,26 +143,26 @@ Map _$WebPageWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); val['pageSourceType'] = - _$WebviewWebpageSourceTypeEnumMap[instance.pageSourceType]!; + _$WebViewWebpageSourceTypeEnumMap[instance.pageSourceType]!; val['input'] = instance.input; - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; return val; } -const _$WebviewWebpageSourceTypeEnumMap = { - WebviewWebpageSourceType.url: 'url', - WebviewWebpageSourceType.html: 'html', - WebviewWebpageSourceType.asset: 'asset', +const _$WebViewWebpageSourceTypeEnumMap = { + WebViewWebpageSourceType.url: 'url', + WebViewWebpageSourceType.html: 'html', + WebViewWebpageSourceType.asset: 'asset', }; -const _$WebviewMediaAutoPlaybackPolicyEnumMap = { - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: +const _$WebViewMediaAutoPlaybackPolicyEnumMap = { + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: 'requireUserActionForAllMedia', - WebviewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', + WebViewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', }; Value? _$JsonConverterFromJson( @@ -171,8 +171,8 @@ Value? _$JsonConverterFromJson( ) => json == null ? null : fromJson(json as Json); -const _$WebviewTypeEnumMap = { - WebviewType.webpage: 'webpage', - WebviewType.googleMaps: 'googleMaps', - WebviewType.twitter: 'twitter', +const _$WebViewTypeEnumMap = { + WebViewType.webpage: 'webpage', + WebViewType.googleMaps: 'googleMaps', + WebViewType.twitter: 'twitter', }; diff --git a/lib/src/api/nodes/webview_twitter_properties.dart b/lib/src/api/nodes/web_view_twitter_properties.dart similarity index 80% rename from lib/src/api/nodes/webview_twitter_properties.dart rename to lib/src/api/nodes/web_view_twitter_properties.dart index ce2f256..cc8dd00 100644 --- a/lib/src/api/nodes/webview_twitter_properties.dart +++ b/lib/src/api/nodes/web_view_twitter_properties.dart @@ -5,20 +5,20 @@ import 'package:json_annotation/json_annotation.dart'; import '../models/models.dart'; -import 'webview_node.dart'; +import 'web_view_node.dart'; -part 'webview_twitter_properties.g.dart'; +part 'web_view_twitter_properties.g.dart'; -/// A [WebviewProperties] implementation that displays a Twitter webview. +/// A [WebViewProperties] implementation that displays a Twitter webview. /// -/// There are multiple kinds of [TwitterWebviewProperties], which is why +/// There are multiple kinds of [TwitterWebViewProperties], which is why /// this class is abstract and provides a base for all of them. /// -/// See: [TweetTwitterWebviewProperties], [TimelineTwitterWebviewProperties], -/// [FollowButtonTwitterWebviewProperties], -/// [MentionButtonTwitterWebviewProperties], -/// [HashtagButtonTwitterWebviewProperties], -abstract class TwitterWebviewProperties extends WebviewProperties { +/// See: [TweetTwitterWebViewProperties], [TimelineTwitterWebViewProperties], +/// [FollowButtonTwitterWebViewProperties], +/// [MentionButtonTwitterWebViewProperties], +/// [HashtagButtonTwitterWebViewProperties], +abstract class TwitterWebViewProperties extends WebViewProperties { /// The color theme that the Twitter webview should use. TwitterEmbedTheme? theme; @@ -61,18 +61,18 @@ abstract class TwitterWebviewProperties extends WebviewProperties { String? languageCode; @override - late WebviewType webviewType = WebviewType.twitter; + late WebViewType webviewType = WebViewType.twitter; @override @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter'; /// The type of Twitter webview to display. This is set by each sub-type - /// of [TwitterWebviewProperties]. + /// of [TwitterWebViewProperties]. late TwitterEmbedType embedType; - /// Creates a new [TwitterWebviewProperties]. - TwitterWebviewProperties({ + /// Creates a new [TwitterWebViewProperties]. + TwitterWebViewProperties({ this.theme, this.twitterTailoring, this.languageCode, @@ -89,34 +89,34 @@ abstract class TwitterWebviewProperties extends WebviewProperties { super.backgroundColor, }); - /// Creates a new [TwitterWebviewProperties] from a [json] map. + /// Creates a new [TwitterWebViewProperties] from a [json] map. /// /// The [embedType] is checked manually in order to return the most - /// appropriate sub-type of [TwitterWebviewProperties] instance. + /// appropriate sub-type of [TwitterWebViewProperties] instance. /// /// TODO: This function is not extendable. If a new type of - /// [TwitterWebviewProperties] is added, this function will need to be + /// [TwitterWebViewProperties] is added, this function will need to be /// updated manually and it inherently disallows any third-party plugins to - /// add their own types of [TwitterWebviewProperties]. - factory TwitterWebviewProperties.fromJson(Map json) { + /// add their own types of [TwitterWebViewProperties]. + factory TwitterWebViewProperties.fromJson(Map json) { switch (TwitterEmbedType.values.byName(json['embedType'])) { case TwitterEmbedType.timeline: - return TimelineTwitterWebviewProperties.fromJson(json); + return TimelineTwitterWebViewProperties.fromJson(json); case TwitterEmbedType.tweet: - return TweetTwitterWebviewProperties.fromJson(json); + return TweetTwitterWebViewProperties.fromJson(json); case TwitterEmbedType.mention: - return MentionButtonTwitterWebviewProperties.fromJson(json); + return MentionButtonTwitterWebViewProperties.fromJson(json); case TwitterEmbedType.hashtag: - return HashtagButtonTwitterWebviewProperties.fromJson(json); + return HashtagButtonTwitterWebViewProperties.fromJson(json); case TwitterEmbedType.follow: - return FollowButtonTwitterWebviewProperties.fromJson(json); + return FollowButtonTwitterWebViewProperties.fromJson(json); } } } /// Implements the Twitter Tweet embed. @JsonSerializable() -class TweetTwitterWebviewProperties extends TwitterWebviewProperties { +class TweetTwitterWebViewProperties extends TwitterWebViewProperties { /// The URL of the tweet to use. String tweetURL; @@ -130,8 +130,8 @@ class TweetTwitterWebviewProperties extends TwitterWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter - Tweet'; - /// Creates a new [TweetTwitterWebviewProperties] instance given a [tweetURL]. - TweetTwitterWebviewProperties({ + /// Creates a new [TweetTwitterWebViewProperties] instance given a [tweetURL]. + TweetTwitterWebViewProperties({ required this.tweetURL, this.hideConversation, super.theme, @@ -153,26 +153,26 @@ class TweetTwitterWebviewProperties extends TwitterWebviewProperties { } @override - Map toJson() => _$TweetTwitterWebviewPropertiesToJson(this); + Map toJson() => _$TweetTwitterWebViewPropertiesToJson(this); - /// Creates a new [TweetTwitterWebviewProperties] instance from a [json] map. - factory TweetTwitterWebviewProperties.fromJson(Map json) => - _$TweetTwitterWebviewPropertiesFromJson(json); + /// Creates a new [TweetTwitterWebViewProperties] instance from a [json] map. + factory TweetTwitterWebViewProperties.fromJson(Map json) => + _$TweetTwitterWebViewPropertiesFromJson(json); @override List get props => [tweetURL, hideConversation, theme, twitterTailoring, languageCode]; - /// Copies this [TweetTwitterWebviewProperties] instance into a new instance + /// Copies this [TweetTwitterWebViewProperties] instance into a new instance /// with optionally changed parameters. - TweetTwitterWebviewProperties copyWith({ + TweetTwitterWebViewProperties copyWith({ String? tweetURL, bool? hideConversation, TwitterEmbedTheme? theme, bool? twitterTailoring, String? languageCode, }) { - return TweetTwitterWebviewProperties( + return TweetTwitterWebViewProperties( tweetURL: tweetURL ?? this.tweetURL, hideConversation: hideConversation ?? this.hideConversation, theme: theme ?? this.theme, @@ -184,7 +184,7 @@ class TweetTwitterWebviewProperties extends TwitterWebviewProperties { /// Implements the Twitter Timeline embed. @JsonSerializable() -class TimelineTwitterWebviewProperties extends TwitterWebviewProperties { +class TimelineTwitterWebViewProperties extends TwitterWebViewProperties { /// The URL of the timeline to be displayed. String timelineURL; @@ -201,9 +201,9 @@ class TimelineTwitterWebviewProperties extends TwitterWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter - Timeline'; - /// Creates a new [TimelineTwitterWebviewProperties] instance given a + /// Creates a new [TimelineTwitterWebViewProperties] instance given a /// [timelineURL]. - TimelineTwitterWebviewProperties({ + TimelineTwitterWebViewProperties({ required this.timelineURL, this.width, this.height, @@ -238,20 +238,20 @@ class TimelineTwitterWebviewProperties extends TwitterWebviewProperties { } @override - Map toJson() => _$TimelineTwitterWebviewPropertiesToJson(this); + Map toJson() => _$TimelineTwitterWebViewPropertiesToJson(this); - /// Creates a new [TimelineTwitterWebviewProperties] instance from a [json] + /// Creates a new [TimelineTwitterWebViewProperties] instance from a [json] /// map. - factory TimelineTwitterWebviewProperties.fromJson(Map json) => - _$TimelineTwitterWebviewPropertiesFromJson(json); + factory TimelineTwitterWebViewProperties.fromJson(Map json) => + _$TimelineTwitterWebViewPropertiesFromJson(json); @override List get props => [timelineURL, width, height, theme, twitterTailoring, languageCode]; - /// Copies this [TimelineTwitterWebviewProperties] instance into a new + /// Copies this [TimelineTwitterWebViewProperties] instance into a new /// instance with optionally changed parameters. - TimelineTwitterWebviewProperties copyWith({ + TimelineTwitterWebViewProperties copyWith({ String? timelineURL, double? width, double? height, @@ -259,7 +259,7 @@ class TimelineTwitterWebviewProperties extends TwitterWebviewProperties { bool? twitterTailoring, String? languageCode, }) { - return TimelineTwitterWebviewProperties( + return TimelineTwitterWebViewProperties( timelineURL: timelineURL ?? this.timelineURL, width: width ?? this.width, height: height ?? this.height, @@ -272,7 +272,7 @@ class TimelineTwitterWebviewProperties extends TwitterWebviewProperties { /// Implements the Twitter Follow button embed. @JsonSerializable() -class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { +class FollowButtonTwitterWebViewProperties extends TwitterWebViewProperties { /// The handle of the user to follow. String handle; @@ -289,9 +289,9 @@ class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter - Follow Button'; - /// Creates a new [FollowButtonTwitterWebviewProperties] instance given a + /// Creates a new [FollowButtonTwitterWebViewProperties] instance given a /// [handle]. - FollowButtonTwitterWebviewProperties({ + FollowButtonTwitterWebViewProperties({ required this.handle, this.hideUsername, this.largeButton, @@ -330,12 +330,12 @@ class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { } @override - Map toJson() => _$FollowButtonTwitterWebviewPropertiesToJson(this); + Map toJson() => _$FollowButtonTwitterWebViewPropertiesToJson(this); - /// Creates a new [FollowButtonTwitterWebviewProperties] instance from a + /// Creates a new [FollowButtonTwitterWebViewProperties] instance from a /// [json] map. - factory FollowButtonTwitterWebviewProperties.fromJson(Map json) => - _$FollowButtonTwitterWebviewPropertiesFromJson(json); + factory FollowButtonTwitterWebViewProperties.fromJson(Map json) => + _$FollowButtonTwitterWebViewPropertiesFromJson(json); @override List get props => [ @@ -347,9 +347,9 @@ class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { languageCode ]; - /// Copies this [FollowButtonTwitterWebviewProperties] instance into a new + /// Copies this [FollowButtonTwitterWebViewProperties] instance into a new /// instance with optionally changed parameters. - FollowButtonTwitterWebviewProperties copyWith({ + FollowButtonTwitterWebViewProperties copyWith({ String? handle, bool? hideUsername, bool? largeButton, @@ -357,7 +357,7 @@ class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { bool? twitterTailoring, String? languageCode, }) { - return FollowButtonTwitterWebviewProperties( + return FollowButtonTwitterWebViewProperties( handle: handle ?? this.handle, hideUsername: hideUsername ?? this.hideUsername, largeButton: largeButton ?? this.largeButton, @@ -370,7 +370,7 @@ class FollowButtonTwitterWebviewProperties extends TwitterWebviewProperties { /// Implements the Twitter Mention button embed. @JsonSerializable() -class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { +class MentionButtonTwitterWebViewProperties extends TwitterWebViewProperties { /// The handle of the user to mention. String handle; @@ -391,9 +391,9 @@ class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter - Mention Button'; - /// Creates a new [MentionButtonTwitterWebviewProperties] instance given a + /// Creates a new [MentionButtonTwitterWebViewProperties] instance given a /// [handle]. - MentionButtonTwitterWebviewProperties({ + MentionButtonTwitterWebViewProperties({ required this.handle, this.largeButton, this.prefilledText, @@ -441,12 +441,12 @@ class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { } @override - Map toJson() => _$MentionButtonTwitterWebviewPropertiesToJson(this); + Map toJson() => _$MentionButtonTwitterWebViewPropertiesToJson(this); - /// Creates a new [MentionButtonTwitterWebviewProperties] instance from a + /// Creates a new [MentionButtonTwitterWebViewProperties] instance from a /// [json] map. - factory MentionButtonTwitterWebviewProperties.fromJson(Map json) => - _$MentionButtonTwitterWebviewPropertiesFromJson(json); + factory MentionButtonTwitterWebViewProperties.fromJson(Map json) => + _$MentionButtonTwitterWebViewPropertiesFromJson(json); @override List get props => [ @@ -459,9 +459,9 @@ class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { languageCode ]; - /// Copies this [MentionButtonTwitterWebviewProperties] instance into a new + /// Copies this [MentionButtonTwitterWebViewProperties] instance into a new /// instance with optionally changed parameters. - MentionButtonTwitterWebviewProperties copyWith({ + MentionButtonTwitterWebViewProperties copyWith({ String? handle, bool? largeButton, String? prefilledText, @@ -470,7 +470,7 @@ class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { bool? twitterTailoring, String? languageCode, }) { - return MentionButtonTwitterWebviewProperties( + return MentionButtonTwitterWebViewProperties( handle: handle ?? this.handle, largeButton: largeButton ?? this.largeButton, prefilledText: prefilledText ?? this.prefilledText, @@ -484,7 +484,7 @@ class MentionButtonTwitterWebviewProperties extends TwitterWebviewProperties { /// Implements the Twitter Hashtag button embed. @JsonSerializable() -class HashtagButtonTwitterWebviewProperties extends TwitterWebviewProperties { +class HashtagButtonTwitterWebViewProperties extends TwitterWebViewProperties { /// The hashtag to search for. String hashtag; @@ -508,9 +508,9 @@ class HashtagButtonTwitterWebviewProperties extends TwitterWebviewProperties { @JsonKey(includeFromJson: false, includeToJson: false) late String label = 'Twitter - Hashtag Button'; - /// Creates a new [HashtagButtonTwitterWebviewProperties] instance given a + /// Creates a new [HashtagButtonTwitterWebViewProperties] instance given a /// [hashtag]. - HashtagButtonTwitterWebviewProperties({ + HashtagButtonTwitterWebViewProperties({ required this.hashtag, this.largeButton, this.prefilledText, @@ -563,12 +563,12 @@ class HashtagButtonTwitterWebviewProperties extends TwitterWebviewProperties { } @override - Map toJson() => _$HashtagButtonTwitterWebviewPropertiesToJson(this); + Map toJson() => _$HashtagButtonTwitterWebViewPropertiesToJson(this); - /// Creates a new [HashtagButtonTwitterWebviewProperties] instance from a + /// Creates a new [HashtagButtonTwitterWebViewProperties] instance from a /// [json] map. - factory HashtagButtonTwitterWebviewProperties.fromJson(Map json) => - _$HashtagButtonTwitterWebviewPropertiesFromJson(json); + factory HashtagButtonTwitterWebViewProperties.fromJson(Map json) => + _$HashtagButtonTwitterWebViewPropertiesFromJson(json); @override List get props => [ @@ -582,9 +582,9 @@ class HashtagButtonTwitterWebviewProperties extends TwitterWebviewProperties { languageCode ]; - /// Copies this [HashtagButtonTwitterWebviewProperties] instance into a new + /// Copies this [HashtagButtonTwitterWebViewProperties] instance into a new /// instance with optionally changed parameters. - HashtagButtonTwitterWebviewProperties copyWith({ + HashtagButtonTwitterWebViewProperties copyWith({ String? hashtag, bool? largeButton, String? prefilledText, @@ -594,7 +594,7 @@ class HashtagButtonTwitterWebviewProperties extends TwitterWebviewProperties { bool? twitterTailoring, String? languageCode, }) { - return HashtagButtonTwitterWebviewProperties( + return HashtagButtonTwitterWebViewProperties( hashtag: hashtag ?? this.hashtag, largeButton: largeButton ?? this.largeButton, prefilledText: prefilledText ?? this.prefilledText, diff --git a/lib/src/api/nodes/webview_twitter_properties.g.dart b/lib/src/api/nodes/web_view_twitter_properties.g.dart similarity index 82% rename from lib/src/api/nodes/webview_twitter_properties.g.dart rename to lib/src/api/nodes/web_view_twitter_properties.g.dart index ddcb7c0..0a0eb16 100644 --- a/lib/src/api/nodes/webview_twitter_properties.g.dart +++ b/lib/src/api/nodes/web_view_twitter_properties.g.dart @@ -1,14 +1,14 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'webview_twitter_properties.dart'; +part of 'web_view_twitter_properties.dart'; // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** -TweetTwitterWebviewProperties _$TweetTwitterWebviewPropertiesFromJson( +TweetTwitterWebViewProperties _$TweetTwitterWebViewPropertiesFromJson( Map json) => - TweetTwitterWebviewProperties( + TweetTwitterWebViewProperties( tweetURL: json['tweetURL'] as String, hideConversation: json['hideConversation'] as bool?, theme: $enumDecodeNullable(_$TwitterEmbedThemeEnumMap, json['theme']), @@ -27,16 +27,16 @@ TweetTwitterWebviewProperties _$TweetTwitterWebviewPropertiesFromJson( ..controlForcePressGesture = json['controlForcePressGesture'] as bool? ..allowsInlineMediaPlayback = json['allowsInlineMediaPlayback'] as bool? ..mediaAutoPlaybackPolicy = $enumDecode( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ..backgroundColor = json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..embedType = $enumDecode(_$TwitterEmbedTypeEnumMap, json['embedType']); -Map _$TweetTwitterWebviewPropertiesToJson( - TweetTwitterWebviewProperties instance) { +Map _$TweetTwitterWebViewPropertiesToJson( + TweetTwitterWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -55,13 +55,13 @@ Map _$TweetTwitterWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('theme', _$TwitterEmbedThemeEnumMap[instance.theme]); writeNotNull('twitterTailoring', instance.twitterTailoring); writeNotNull('languageCode', instance.languageCode); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['tweetURL'] = instance.tweetURL; writeNotNull('hideConversation', instance.hideConversation); val['embedType'] = _$TwitterEmbedTypeEnumMap[instance.embedType]!; @@ -79,16 +79,16 @@ Value? _$JsonConverterFromJson( ) => json == null ? null : fromJson(json as Json); -const _$WebviewMediaAutoPlaybackPolicyEnumMap = { - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: +const _$WebViewMediaAutoPlaybackPolicyEnumMap = { + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia: 'requireUserActionForAllMedia', - WebviewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', + WebViewMediaAutoPlaybackPolicy.alwaysPlayAllMedia: 'alwaysPlayAllMedia', }; -const _$WebviewTypeEnumMap = { - WebviewType.webpage: 'webpage', - WebviewType.googleMaps: 'googleMaps', - WebviewType.twitter: 'twitter', +const _$WebViewTypeEnumMap = { + WebViewType.webpage: 'webpage', + WebViewType.googleMaps: 'googleMaps', + WebViewType.twitter: 'twitter', }; const _$TwitterEmbedTypeEnumMap = { @@ -99,9 +99,9 @@ const _$TwitterEmbedTypeEnumMap = { TwitterEmbedType.follow: 'follow', }; -TimelineTwitterWebviewProperties _$TimelineTwitterWebviewPropertiesFromJson( +TimelineTwitterWebViewProperties _$TimelineTwitterWebViewPropertiesFromJson( Map json) => - TimelineTwitterWebviewProperties( + TimelineTwitterWebViewProperties( timelineURL: json['timelineURL'] as String, width: (json['width'] as num?)?.toDouble(), height: (json['height'] as num?)?.toDouble(), @@ -118,20 +118,20 @@ TimelineTwitterWebviewProperties _$TimelineTwitterWebviewPropertiesFromJson( controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..embedType = $enumDecode(_$TwitterEmbedTypeEnumMap, json['embedType']); -Map _$TimelineTwitterWebviewPropertiesToJson( - TimelineTwitterWebviewProperties instance) { +Map _$TimelineTwitterWebViewPropertiesToJson( + TimelineTwitterWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -150,13 +150,13 @@ Map _$TimelineTwitterWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('theme', _$TwitterEmbedThemeEnumMap[instance.theme]); writeNotNull('twitterTailoring', instance.twitterTailoring); writeNotNull('languageCode', instance.languageCode); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['timelineURL'] = instance.timelineURL; writeNotNull('width', instance.width); writeNotNull('height', instance.height); @@ -164,9 +164,9 @@ Map _$TimelineTwitterWebviewPropertiesToJson( return val; } -FollowButtonTwitterWebviewProperties - _$FollowButtonTwitterWebviewPropertiesFromJson(Map json) => - FollowButtonTwitterWebviewProperties( +FollowButtonTwitterWebViewProperties + _$FollowButtonTwitterWebViewPropertiesFromJson(Map json) => + FollowButtonTwitterWebViewProperties( handle: json['handle'] as String, hideUsername: json['hideUsername'] as bool?, largeButton: json['largeButton'] as bool?, @@ -183,21 +183,21 @@ FollowButtonTwitterWebviewProperties controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..embedType = $enumDecode(_$TwitterEmbedTypeEnumMap, json['embedType']); -Map _$FollowButtonTwitterWebviewPropertiesToJson( - FollowButtonTwitterWebviewProperties instance) { +Map _$FollowButtonTwitterWebViewPropertiesToJson( + FollowButtonTwitterWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -216,13 +216,13 @@ Map _$FollowButtonTwitterWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('theme', _$TwitterEmbedThemeEnumMap[instance.theme]); writeNotNull('twitterTailoring', instance.twitterTailoring); writeNotNull('languageCode', instance.languageCode); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['handle'] = instance.handle; writeNotNull('hideUsername', instance.hideUsername); writeNotNull('largeButton', instance.largeButton); @@ -230,9 +230,9 @@ Map _$FollowButtonTwitterWebviewPropertiesToJson( return val; } -MentionButtonTwitterWebviewProperties - _$MentionButtonTwitterWebviewPropertiesFromJson(Map json) => - MentionButtonTwitterWebviewProperties( +MentionButtonTwitterWebViewProperties + _$MentionButtonTwitterWebViewPropertiesFromJson(Map json) => + MentionButtonTwitterWebViewProperties( handle: json['handle'] as String, largeButton: json['largeButton'] as bool?, prefilledText: json['prefilledText'] as String?, @@ -252,21 +252,21 @@ MentionButtonTwitterWebviewProperties controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..embedType = $enumDecode(_$TwitterEmbedTypeEnumMap, json['embedType']); -Map _$MentionButtonTwitterWebviewPropertiesToJson( - MentionButtonTwitterWebviewProperties instance) { +Map _$MentionButtonTwitterWebViewPropertiesToJson( + MentionButtonTwitterWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -285,13 +285,13 @@ Map _$MentionButtonTwitterWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('theme', _$TwitterEmbedThemeEnumMap[instance.theme]); writeNotNull('twitterTailoring', instance.twitterTailoring); writeNotNull('languageCode', instance.languageCode); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['handle'] = instance.handle; writeNotNull('largeButton', instance.largeButton); writeNotNull('prefilledText', instance.prefilledText); @@ -300,9 +300,9 @@ Map _$MentionButtonTwitterWebviewPropertiesToJson( return val; } -HashtagButtonTwitterWebviewProperties - _$HashtagButtonTwitterWebviewPropertiesFromJson(Map json) => - HashtagButtonTwitterWebviewProperties( +HashtagButtonTwitterWebViewProperties + _$HashtagButtonTwitterWebViewPropertiesFromJson(Map json) => + HashtagButtonTwitterWebViewProperties( hashtag: json['hashtag'] as String, largeButton: json['largeButton'] as bool?, prefilledText: json['prefilledText'] as String?, @@ -323,21 +323,21 @@ HashtagButtonTwitterWebviewProperties controlForcePressGesture: json['controlForcePressGesture'] as bool?, allowsInlineMediaPlayback: json['allowsInlineMediaPlayback'] as bool?, mediaAutoPlaybackPolicy: $enumDecodeNullable( - _$WebviewMediaAutoPlaybackPolicyEnumMap, + _$WebViewMediaAutoPlaybackPolicyEnumMap, json['mediaAutoPlaybackPolicy']) ?? - WebviewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, + WebViewMediaAutoPlaybackPolicy.requireUserActionForAllMedia, backgroundColor: json['backgroundColor'] == null ? null : ColorRGBA.fromJson(json['backgroundColor'] as Map), ) ..src = _$JsonConverterFromJson( json['src'], const Base64JsonConverter().fromJson) - ..webviewType = $enumDecode(_$WebviewTypeEnumMap, json['webviewType']) + ..webviewType = $enumDecode(_$WebViewTypeEnumMap, json['webviewType']) ..embedType = $enumDecode(_$TwitterEmbedTypeEnumMap, json['embedType']); -Map _$HashtagButtonTwitterWebviewPropertiesToJson( - HashtagButtonTwitterWebviewProperties instance) { +Map _$HashtagButtonTwitterWebViewPropertiesToJson( + HashtagButtonTwitterWebViewProperties instance) { final val = {}; void writeNotNull(String key, dynamic value) { @@ -356,13 +356,13 @@ Map _$HashtagButtonTwitterWebviewPropertiesToJson( writeNotNull('controlLongPressGesture', instance.controlLongPressGesture); writeNotNull('controlForcePressGesture', instance.controlForcePressGesture); writeNotNull('allowsInlineMediaPlayback', instance.allowsInlineMediaPlayback); - val['mediaAutoPlaybackPolicy'] = _$WebviewMediaAutoPlaybackPolicyEnumMap[ + val['mediaAutoPlaybackPolicy'] = _$WebViewMediaAutoPlaybackPolicyEnumMap[ instance.mediaAutoPlaybackPolicy]!; writeNotNull('backgroundColor', instance.backgroundColor?.toJson()); writeNotNull('theme', _$TwitterEmbedThemeEnumMap[instance.theme]); writeNotNull('twitterTailoring', instance.twitterTailoring); writeNotNull('languageCode', instance.languageCode); - val['webviewType'] = _$WebviewTypeEnumMap[instance.webviewType]!; + val['webviewType'] = _$WebViewTypeEnumMap[instance.webviewType]!; val['hashtag'] = instance.hashtag; writeNotNull('largeButton', instance.largeButton); writeNotNull('prefilledText', instance.prefilledText); From 44c9c6aa648b39b03b6c6e67da516cbce5922301 Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Wed, 29 Mar 2023 16:34:09 +0300 Subject: [PATCH 2/6] ListViews #2 * Add ListView codegen. * Enforce scroll behavior in editor properties panel. * Ensure children are not allowed to flex or expand inside listview. (cherry picked from commit bbc850c6172b8781253f7d84d351d4111d14fa28) --- lib/src/api/mixins.dart | 7 +++++++ lib/src/api/nodes/list_view_node.dart | 3 +++ 2 files changed, 10 insertions(+) diff --git a/lib/src/api/mixins.dart b/lib/src/api/mixins.dart index 361754d..e672a81 100644 --- a/lib/src/api/mixins.dart +++ b/lib/src/api/mixins.dart @@ -966,6 +966,13 @@ enum ScrollViewKeyboardDismissBehaviorC { /// Nodes like [ListViewNode], [RowColumnNode] and [CanvasNode] uses this to /// provide options for its scroll behavior. mixin ScrollableMixin on BaseNode { + /// Whether this widget enforces its scrollable behavior. + /// [CanvasNode]s do not need to be scrollable but can. + /// [ListViewNode]s, on the other hand, must be scrollable. + /// + /// If this is set to true, [isScrollable] becomes meaningless. + bool get isScrollingEnforced => false; + /// Whether the scrolling is enabled. late bool isScrollable; diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart index c53fe1d..1abb68a 100644 --- a/lib/src/api/nodes/list_view_node.dart +++ b/lib/src/api/nodes/list_view_node.dart @@ -23,6 +23,9 @@ class ListViewNode extends SinglePlaceholderNode @override final bool supportsPadding = true; + @override + bool get isScrollingEnforced => true; + /// The properties of the [ListView]. ListViewProperties properties; From 13e78d3431a720c9c5cec08153e9939740bc9500 Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Thu, 30 Mar 2023 19:47:19 +0300 Subject: [PATCH 3/6] ListViews #3 Add margin support for list view codegen. --- lib/src/api/nodes/accordion_node.g.dart | 2 +- lib/src/api/nodes/app_bar_node.g.dart | 2 +- lib/src/api/nodes/auto_placeholder_node.g.dart | 2 +- lib/src/api/nodes/base_node.dart | 17 +++++++++-------- lib/src/api/nodes/button_node.g.dart | 2 +- lib/src/api/nodes/canvas_node.g.dart | 2 +- lib/src/api/nodes/checkbox_node.g.dart | 2 +- lib/src/api/nodes/divider_node.g.dart | 2 +- lib/src/api/nodes/dropdown_node.g.dart | 2 +- lib/src/api/nodes/embedded_video_node.dart | 3 +++ lib/src/api/nodes/embedded_video_node.g.dart | 2 +- lib/src/api/nodes/expansion_tile_node.g.dart | 2 +- .../nodes/floating_action_button_node.g.dart | 2 +- lib/src/api/nodes/frame_node.g.dart | 2 +- .../api/nodes/freeform_placeholder_node.g.dart | 2 +- lib/src/api/nodes/icon_node.dart | 9 ++++++--- lib/src/api/nodes/icon_node.g.dart | 2 +- lib/src/api/nodes/list_tile_node.g.dart | 2 +- lib/src/api/nodes/list_view_node.dart | 1 + lib/src/api/nodes/list_view_node.g.dart | 2 +- lib/src/api/nodes/loading_indicator_node.g.dart | 2 +- lib/src/api/nodes/navigation_bar_node.g.dart | 2 +- lib/src/api/nodes/placeholder_node.g.dart | 2 +- lib/src/api/nodes/progressbar_node.g.dart | 2 +- lib/src/api/nodes/radio_node.g.dart | 2 +- lib/src/api/nodes/rectangle_node.g.dart | 2 +- lib/src/api/nodes/row_column_node.g.dart | 2 +- .../api/nodes/single_placeholder_node.g.dart | 2 +- lib/src/api/nodes/slider_node.g.dart | 2 +- lib/src/api/nodes/spacer_node.g.dart | 4 ++-- lib/src/api/nodes/switch_node.g.dart | 2 +- lib/src/api/nodes/text_field_node.g.dart | 2 +- lib/src/api/nodes/text_node.dart | 3 +++ lib/src/api/nodes/text_node.g.dart | 4 ++-- lib/src/api/nodes/variance_node.g.dart | 2 +- lib/src/api/nodes/web_view_node.dart | 3 +++ lib/src/api/nodes/web_view_node.g.dart | 2 +- 37 files changed, 58 insertions(+), 44 deletions(-) diff --git a/lib/src/api/nodes/accordion_node.g.dart b/lib/src/api/nodes/accordion_node.g.dart index b4c5ba5..fa880c0 100644 --- a/lib/src/api/nodes/accordion_node.g.dart +++ b/lib/src/api/nodes/accordion_node.g.dart @@ -80,9 +80,9 @@ Map _$AccordionNodeToJson(AccordionNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/app_bar_node.g.dart b/lib/src/api/nodes/app_bar_node.g.dart index abdeeb5..8d7d51c 100644 --- a/lib/src/api/nodes/app_bar_node.g.dart +++ b/lib/src/api/nodes/app_bar_node.g.dart @@ -69,9 +69,9 @@ Map _$AppBarNodeToJson(AppBarNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/auto_placeholder_node.g.dart b/lib/src/api/nodes/auto_placeholder_node.g.dart index 4500d31..5223fda 100644 --- a/lib/src/api/nodes/auto_placeholder_node.g.dart +++ b/lib/src/api/nodes/auto_placeholder_node.g.dart @@ -102,9 +102,9 @@ Map _$AutoPlaceholderNodeToJson( 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/base_node.dart b/lib/src/api/nodes/base_node.dart index ec418d7..0c6f26e 100644 --- a/lib/src/api/nodes/base_node.dart +++ b/lib/src/api/nodes/base_node.dart @@ -60,14 +60,6 @@ abstract class BaseNode with SerializableMixin, EquatableMixin { /// through the [codelessly_sdk] is wrapped in a [Visibility] widget. bool visible; - /// Since a lot of components can't support padding, the default value is set - /// to false. Any node that supports padding must override this and and set - /// it to true. Otherwise, the padding control won't show up in the editor. - /// - /// Nodes that can't support external padding modifications are like - /// [EmbeddedVideoNode], [WebViewNode], [IconNode], [TextNode], etc. - final bool supportsPadding = false; - /// Constraints apply to the [middleBoxLocal] /// See [BoxConstraintsModel] for more info on how to define the /// constraints. @@ -377,6 +369,15 @@ abstract class BaseNode with SerializableMixin, EquatableMixin { @JsonKey(includeFromJson: false, includeToJson: false) String get debugLabel => '$name [$id]'; + /// Since a lot of components can't support padding, the default value is set + /// to false. Any node that supports padding must override this and and set + /// it to true. Otherwise, the padding control won't show up in the editor. + /// + /// Nodes that can't support external padding modifications are like + /// [EmbeddedVideoNode], [WebViewNode], [IconNode], [TextNode], etc. + @JsonKey(includeFromJson: false, includeToJson: false) + bool get supportsPadding => false; + /// Default constructor of this class. BaseNode({ required this.id, diff --git a/lib/src/api/nodes/button_node.g.dart b/lib/src/api/nodes/button_node.g.dart index 1825efd..8ea2950 100644 --- a/lib/src/api/nodes/button_node.g.dart +++ b/lib/src/api/nodes/button_node.g.dart @@ -68,9 +68,9 @@ Map _$ButtonNodeToJson(ButtonNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/canvas_node.g.dart b/lib/src/api/nodes/canvas_node.g.dart index 48cabc5..0d216cb 100644 --- a/lib/src/api/nodes/canvas_node.g.dart +++ b/lib/src/api/nodes/canvas_node.g.dart @@ -128,9 +128,9 @@ Map _$CanvasNodeToJson(CanvasNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/checkbox_node.g.dart b/lib/src/api/nodes/checkbox_node.g.dart index d707c66..8d0a6e3 100644 --- a/lib/src/api/nodes/checkbox_node.g.dart +++ b/lib/src/api/nodes/checkbox_node.g.dart @@ -70,9 +70,9 @@ Map _$CheckboxNodeToJson(CheckboxNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/divider_node.g.dart b/lib/src/api/nodes/divider_node.g.dart index 002759f..812eec6 100644 --- a/lib/src/api/nodes/divider_node.g.dart +++ b/lib/src/api/nodes/divider_node.g.dart @@ -59,9 +59,9 @@ Map _$DividerNodeToJson(DividerNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/dropdown_node.g.dart b/lib/src/api/nodes/dropdown_node.g.dart index b94ba0e..3911f12 100644 --- a/lib/src/api/nodes/dropdown_node.g.dart +++ b/lib/src/api/nodes/dropdown_node.g.dart @@ -59,9 +59,9 @@ Map _$DropdownNodeToJson(DropdownNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/embedded_video_node.dart b/lib/src/api/nodes/embedded_video_node.dart index d8eddd8..45cf22f 100644 --- a/lib/src/api/nodes/embedded_video_node.dart +++ b/lib/src/api/nodes/embedded_video_node.dart @@ -35,6 +35,9 @@ class EmbeddedVideoNode extends SceneNode bool get hasUrl => properties.url != null && properties.url!.trim().isNotEmpty; + @override + bool get supportsPadding => false; + /// Creates a blank embedded video preview. EmbeddedVideoNode.empty() : properties = EmbeddedYoutubeVideoProperties(), diff --git a/lib/src/api/nodes/embedded_video_node.g.dart b/lib/src/api/nodes/embedded_video_node.g.dart index 9663924..7923059 100644 --- a/lib/src/api/nodes/embedded_video_node.g.dart +++ b/lib/src/api/nodes/embedded_video_node.g.dart @@ -69,9 +69,9 @@ Map _$EmbeddedVideoNodeToJson(EmbeddedVideoNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/expansion_tile_node.g.dart b/lib/src/api/nodes/expansion_tile_node.g.dart index 8172bf5..c44ded0 100644 --- a/lib/src/api/nodes/expansion_tile_node.g.dart +++ b/lib/src/api/nodes/expansion_tile_node.g.dart @@ -80,9 +80,9 @@ Map _$ExpansionTileNodeToJson(ExpansionTileNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/floating_action_button_node.g.dart b/lib/src/api/nodes/floating_action_button_node.g.dart index db10a55..099624c 100644 --- a/lib/src/api/nodes/floating_action_button_node.g.dart +++ b/lib/src/api/nodes/floating_action_button_node.g.dart @@ -72,9 +72,9 @@ Map _$FloatingActionButtonNodeToJson( 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/frame_node.g.dart b/lib/src/api/nodes/frame_node.g.dart index c4306c2..34d83e8 100644 --- a/lib/src/api/nodes/frame_node.g.dart +++ b/lib/src/api/nodes/frame_node.g.dart @@ -95,9 +95,9 @@ Map _$FrameNodeToJson(FrameNode instance) => { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/freeform_placeholder_node.g.dart b/lib/src/api/nodes/freeform_placeholder_node.g.dart index 4acf0bc..52b4d22 100644 --- a/lib/src/api/nodes/freeform_placeholder_node.g.dart +++ b/lib/src/api/nodes/freeform_placeholder_node.g.dart @@ -93,9 +93,9 @@ Map _$FreeformPlaceholderNodeToJson( 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/icon_node.dart b/lib/src/api/nodes/icon_node.dart index 75805d2..f227910 100644 --- a/lib/src/api/nodes/icon_node.dart +++ b/lib/src/api/nodes/icon_node.dart @@ -44,6 +44,12 @@ class IconNode extends SceneNode @override final String type = 'icon'; + @override + bool get supportsPadding => false; + + @override + double get aspectRatio => 1; + /// Creates an [IconNode] with the given data. IconNode({ required this.icon, @@ -84,7 +90,4 @@ class IconNode extends SceneNode @override Map toJson() => _$IconNodeToJson(this); - - @override - double get aspectRatio => 1; } diff --git a/lib/src/api/nodes/icon_node.g.dart b/lib/src/api/nodes/icon_node.g.dart index e9d0f9e..d06e136 100644 --- a/lib/src/api/nodes/icon_node.g.dart +++ b/lib/src/api/nodes/icon_node.g.dart @@ -71,9 +71,9 @@ Map _$IconNodeToJson(IconNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/list_tile_node.g.dart b/lib/src/api/nodes/list_tile_node.g.dart index 8e8abe5..f998e6b 100644 --- a/lib/src/api/nodes/list_tile_node.g.dart +++ b/lib/src/api/nodes/list_tile_node.g.dart @@ -75,9 +75,9 @@ Map _$ListTileNodeToJson(ListTileNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart index 1abb68a..8999dd3 100644 --- a/lib/src/api/nodes/list_view_node.dart +++ b/lib/src/api/nodes/list_view_node.dart @@ -153,6 +153,7 @@ class ListViewProperties with SerializableMixin, EquatableMixin { }) : dividerProperties = dividerProperties ?? DividerProperties(); ListViewProperties copyWith({ + String? bodyId, int? itemCount, ScrollPhysicsC? physics, AxisC? scrollDirection, diff --git a/lib/src/api/nodes/list_view_node.g.dart b/lib/src/api/nodes/list_view_node.g.dart index c40094c..67b4645 100644 --- a/lib/src/api/nodes/list_view_node.g.dart +++ b/lib/src/api/nodes/list_view_node.g.dart @@ -94,9 +94,9 @@ Map _$ListViewNodeToJson(ListViewNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/loading_indicator_node.g.dart b/lib/src/api/nodes/loading_indicator_node.g.dart index 5c764a6..bc33566 100644 --- a/lib/src/api/nodes/loading_indicator_node.g.dart +++ b/lib/src/api/nodes/loading_indicator_node.g.dart @@ -62,9 +62,9 @@ Map _$LoadingIndicatorNodeToJson( 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/navigation_bar_node.g.dart b/lib/src/api/nodes/navigation_bar_node.g.dart index 15b77bc..443f410 100644 --- a/lib/src/api/nodes/navigation_bar_node.g.dart +++ b/lib/src/api/nodes/navigation_bar_node.g.dart @@ -70,9 +70,9 @@ Map _$NavigationBarNodeToJson(NavigationBarNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/placeholder_node.g.dart b/lib/src/api/nodes/placeholder_node.g.dart index 3d33cf4..b8c6f9a 100644 --- a/lib/src/api/nodes/placeholder_node.g.dart +++ b/lib/src/api/nodes/placeholder_node.g.dart @@ -60,9 +60,9 @@ Map _$PlaceholderNodeToJson(PlaceholderNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/progressbar_node.g.dart b/lib/src/api/nodes/progressbar_node.g.dart index 0321a52..c2ef5d0 100644 --- a/lib/src/api/nodes/progressbar_node.g.dart +++ b/lib/src/api/nodes/progressbar_node.g.dart @@ -69,9 +69,9 @@ Map _$ProgressBarNodeToJson(ProgressBarNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/radio_node.g.dart b/lib/src/api/nodes/radio_node.g.dart index aab618d..167f304 100644 --- a/lib/src/api/nodes/radio_node.g.dart +++ b/lib/src/api/nodes/radio_node.g.dart @@ -71,9 +71,9 @@ Map _$RadioNodeToJson(RadioNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/rectangle_node.g.dart b/lib/src/api/nodes/rectangle_node.g.dart index ef819e7..a8d75e8 100644 --- a/lib/src/api/nodes/rectangle_node.g.dart +++ b/lib/src/api/nodes/rectangle_node.g.dart @@ -94,9 +94,9 @@ Map _$RectangleNodeToJson(RectangleNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/row_column_node.g.dart b/lib/src/api/nodes/row_column_node.g.dart index c0c9588..37b4629 100644 --- a/lib/src/api/nodes/row_column_node.g.dart +++ b/lib/src/api/nodes/row_column_node.g.dart @@ -101,9 +101,9 @@ Map _$RowColumnNodeToJson(RowColumnNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/single_placeholder_node.g.dart b/lib/src/api/nodes/single_placeholder_node.g.dart index 104bfec..e49f643 100644 --- a/lib/src/api/nodes/single_placeholder_node.g.dart +++ b/lib/src/api/nodes/single_placeholder_node.g.dart @@ -71,9 +71,9 @@ Map _$SinglePlaceholderNodeToJson( 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/slider_node.g.dart b/lib/src/api/nodes/slider_node.g.dart index bcce50f..0884abc 100644 --- a/lib/src/api/nodes/slider_node.g.dart +++ b/lib/src/api/nodes/slider_node.g.dart @@ -70,9 +70,9 @@ Map _$SliderNodeToJson(SliderNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/spacer_node.g.dart b/lib/src/api/nodes/spacer_node.g.dart index bf811df..6aa6ce1 100644 --- a/lib/src/api/nodes/spacer_node.g.dart +++ b/lib/src/api/nodes/spacer_node.g.dart @@ -28,10 +28,10 @@ SpacerNode _$SpacerNodeFromJson(Map json) => SpacerNode( ..constraints = BoxConstraintsModel.fromJson(json['constraints'] as Map) ..positioningMode = $enumDecode(_$PositioningModeEnumMap, json['positioningMode']) + ..aspectRatioLock = json['aspectRatioLock'] as bool ..reactions = (json['reactions'] as List) .map((e) => Reaction.fromJson(e as Map)) .toList() - ..aspectRatioLock = json['aspectRatioLock'] as bool ..type = json['type'] as String; Map _$SpacerNodeToJson(SpacerNode instance) => @@ -44,9 +44,9 @@ Map _$SpacerNodeToJson(SpacerNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), 'type': instance.type, diff --git a/lib/src/api/nodes/switch_node.g.dart b/lib/src/api/nodes/switch_node.g.dart index 2fed016..f083fc3 100644 --- a/lib/src/api/nodes/switch_node.g.dart +++ b/lib/src/api/nodes/switch_node.g.dart @@ -70,9 +70,9 @@ Map _$SwitchNodeToJson(SwitchNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/text_field_node.g.dart b/lib/src/api/nodes/text_field_node.g.dart index f11d677..513e8bc 100644 --- a/lib/src/api/nodes/text_field_node.g.dart +++ b/lib/src/api/nodes/text_field_node.g.dart @@ -59,9 +59,9 @@ Map _$TextFieldNodeToJson(TextFieldNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/text_node.dart b/lib/src/api/nodes/text_node.dart index 199adbd..2fb664d 100644 --- a/lib/src/api/nodes/text_node.dart +++ b/lib/src/api/nodes/text_node.dart @@ -77,6 +77,9 @@ class TextNode extends SceneNode @override List get fonts => textMixedProps.map((e) => e.fontName).toList(); + @override + bool get supportsPadding => false; + /// Creates a [TextNode] instance with the given data. TextNode({ required super.id, diff --git a/lib/src/api/nodes/text_node.g.dart b/lib/src/api/nodes/text_node.g.dart index a5444d4..33c5563 100644 --- a/lib/src/api/nodes/text_node.g.dart +++ b/lib/src/api/nodes/text_node.g.dart @@ -103,13 +103,14 @@ Map _$TextNodeToJson(TextNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'characters': instance.characters, 'textMixedProps': instance.textMixedProps.map((e) => e.toJson()).toList(), 'textAlignHorizontal': _$TextAlignHorizontalEnumEnumMap[instance.textAlignHorizontal]!, + 'alignment': instance.alignment.toJson(), 'textAlignVertical': _$TextAlignVerticalEnumEnumMap[instance.textAlignVertical]!, 'paragraphIndent': instance.paragraphIndent, @@ -124,7 +125,6 @@ Map _$TextNodeToJson(TextNode instance) { writeNotNull('maxLines', instance.maxLines); val['overflow'] = _$TextOverflowCEnumMap[instance.overflow]!; - val['alignment'] = instance.alignment.toJson(); val['outerBoxLocal'] = instance.outerBoxLocal.toJson(); val['basicBoxLocal'] = instance.basicBoxLocal.toJson(); val['margin'] = instance.margin.toJson(); diff --git a/lib/src/api/nodes/variance_node.g.dart b/lib/src/api/nodes/variance_node.g.dart index 6e96658..b0ec93a 100644 --- a/lib/src/api/nodes/variance_node.g.dart +++ b/lib/src/api/nodes/variance_node.g.dart @@ -72,9 +72,9 @@ Map _$VarianceNodeToJson(VarianceNode instance) { 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), diff --git a/lib/src/api/nodes/web_view_node.dart b/lib/src/api/nodes/web_view_node.dart index 4be15cb..6756262 100644 --- a/lib/src/api/nodes/web_view_node.dart +++ b/lib/src/api/nodes/web_view_node.dart @@ -34,6 +34,9 @@ class WebViewNode extends SceneNode bool get hasData => properties.src != null && properties.src!.trim().isNotEmpty; + @override + bool get supportsPadding => false; + /// Creates a new [WebViewNode] instance given the required parameters. WebViewNode({ required super.id, diff --git a/lib/src/api/nodes/web_view_node.g.dart b/lib/src/api/nodes/web_view_node.g.dart index 3ce0d70..cb7d658 100644 --- a/lib/src/api/nodes/web_view_node.g.dart +++ b/lib/src/api/nodes/web_view_node.g.dart @@ -69,9 +69,9 @@ Map _$WebViewNodeToJson(WebViewNode instance) => 'positioningMode': _$PositioningModeEnumMap[instance.positioningMode]!, 'horizontalFit': _$SizeFitEnumMap[instance.horizontalFit]!, 'verticalFit': _$SizeFitEnumMap[instance.verticalFit]!, - 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'flex': instance.flex, 'aspectRatioLock': instance.aspectRatioLock, + 'reactions': instance.reactions.map((e) => e.toJson()).toList(), 'alignment': instance.alignment.toJson(), 'outerBoxLocal': instance.outerBoxLocal.toJson(), 'basicBoxLocal': instance.basicBoxLocal.toJson(), From d2fcf574ff650b40451da8157867ad35f3403489 Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Fri, 31 Mar 2023 15:05:29 +0300 Subject: [PATCH 4/6] ListViews #5 * ListViews now render their children properly. --- lib/src/api/nodes/list_view_node.dart | 33 --------------------------- 1 file changed, 33 deletions(-) diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart index 8999dd3..9883064 100644 --- a/lib/src/api/nodes/list_view_node.dart +++ b/lib/src/api/nodes/list_view_node.dart @@ -84,39 +84,6 @@ class ListViewNode extends SinglePlaceholderNode @override Map toJson() => _$ListViewNodeToJson(this); - // @override - // SizeC minimumInternalSize({ - // required SizeFit horizontalFit, - // required SizeFit verticalFit, - // }) { - // if (children.isEmpty || properties.itemCount == null) return SizeC.zero; - // if (properties.itemExtent != null && !properties.hasSeparator) { - // if (scrollDirection.isVertical) { - // return SizeC(0, properties.itemExtent! * properties.itemCount!); - // } else { - // return SizeC(properties.itemExtent! * properties.itemCount!, 0); - // } - // } - // - // // If the scroll direction axis's SizeFit is shrinkwrap. - // final child = nodeDelegate.getNodeByID(children.first); - // if (scrollDirection.isVertical && verticalFit == SizeFit.shrinkWrap) { - // final itemsHeight = child.outerBoxLocal.height * properties.itemCount!; - // final separatorsHeight = properties.hasSeparator - // ? properties.separatorSpacing * (properties.itemCount! - 1) - // : 0; - // return SizeC(0, itemsHeight + separatorsHeight); - // } else if (scrollDirection.isHorizontal && - // horizontalFit == SizeFit.shrinkWrap) { - // final itemsWidth = child.outerBoxLocal.width * properties.itemCount!; - // final separatorsWidth = properties.hasSeparator - // ? properties.separatorSpacing * (properties.itemCount! - 1) - // : 0; - // return SizeC(itemsWidth + separatorsWidth, 0); - // } - // return SizeC.zero; - // } - AlignmentModel childAlignment() { switch (scrollDirection) { case AxisC.horizontal: From 990eb5494a2cf0d53bcf3bd284a453a0a5c8b4a4 Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Tue, 4 Apr 2023 16:03:36 +0300 Subject: [PATCH 5/6] Fix parent highlighting of canvases and listview nodes. --- lib/src/api/mixins.dart | 3 +++ lib/src/api/nodes/canvas_node.dart | 3 --- lib/src/api/nodes/list_view_node.dart | 24 +++++++++++------------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/src/api/mixins.dart b/lib/src/api/mixins.dart index e672a81..7eb5af0 100644 --- a/lib/src/api/mixins.dart +++ b/lib/src/api/mixins.dart @@ -7,6 +7,9 @@ import 'package:json_annotation/json_annotation.dart'; import 'models/models.dart'; import 'nodes/nodes.dart'; +/// To avoid "node is Canvas || node is ExpansionTileNode || ..." we use this mixin. +mixin IsolatedMixin {} + /// A base class for nodes that can have blends and decoration. abstract class DefaultShapeNode extends SceneNode with BlendMixin, GeometryMixin { diff --git a/lib/src/api/nodes/canvas_node.dart b/lib/src/api/nodes/canvas_node.dart index ec797b9..2ea697c 100644 --- a/lib/src/api/nodes/canvas_node.dart +++ b/lib/src/api/nodes/canvas_node.dart @@ -12,9 +12,6 @@ import 'nodes.dart'; part 'canvas_node.g.dart'; -/// To avoid "node is Canvas || node is ExpansionTileNode || ..." we use this mixin. -mixin IsolatedMixin {} - /// Represents a canvas or a screen. @JsonSerializable() class CanvasNode extends ParentNode diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart index 9883064..8bc06fd 100644 --- a/lib/src/api/nodes/list_view_node.dart +++ b/lib/src/api/nodes/list_view_node.dart @@ -1,10 +1,7 @@ import 'package:equatable/equatable.dart'; import 'package:json_annotation/json_annotation.dart'; -import '../mixins.dart'; -import '../models/models.dart'; -import 'divider_node.dart'; -import 'single_placeholder_node.dart'; +import '../../../codelessly_api.dart'; part 'list_view_node.g.dart'; @@ -16,7 +13,8 @@ class ListViewNode extends SinglePlaceholderNode ScrollableMixin, CustomPropertiesMixin, VariablePropertiesMixin, - ClipMixin { + ClipMixin, + IsolatedMixin { @override final String type = 'listView'; @@ -154,12 +152,12 @@ class ListViewProperties with SerializableMixin, EquatableMixin { @override List get props => [ - itemCount, - itemExtent, - cacheExtent, - separator, - separatorSpacing, - hasSeparator, - dividerProperties, - ]; + itemCount, + itemExtent, + cacheExtent, + separator, + separatorSpacing, + hasSeparator, + dividerProperties, + ]; } From fbe083b55744438235bf70aea05fceab5ecf2999 Mon Sep 17 00:00:00 2001 From: Saad Ardati Date: Tue, 4 Apr 2023 19:31:47 +0300 Subject: [PATCH 6/6] Nuke ScrollLinkableMixin. --- lib/src/api/mixins.dart | 27 ------------------- lib/src/api/nodes/list_view_node.dart | 37 ++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/lib/src/api/mixins.dart b/lib/src/api/mixins.dart index 7eb5af0..6e58311 100644 --- a/lib/src/api/mixins.dart +++ b/lib/src/api/mixins.dart @@ -1024,33 +1024,6 @@ mixin ScrollableMixin on BaseNode { } } -/// Will link this node to a provided [CanvasId] to render it as a scrollable -/// list view. -/// -/// This is meant to be for defining a simple rectangle node into a "view" into -/// a canvas, where-in the output simply puts the entire canvas tree as a child -/// of rectangle. -@Deprecated( - 'This feature has been de-scoped and might be removed in the future. We have ' - 'dedicated [ListViewNode]s and [PageViewNode]s now.', -) -mixin ScrollLinkableMixin on BaseNode { - /// Whether the scroll link is enabled. - late bool scrollLinkEnabled; - - /// The ID of the canvas node to link to. - late String? scrollableCanvasId; - - /// Sets the properties of this mixin. - void setScrollLinkableMixin({ - required bool scrollLinkEnabled, - required String? scrollableCanvasId, - }) { - this.scrollLinkEnabled = scrollLinkEnabled; - this.scrollableCanvasId = scrollableCanvasId; - } -} - /// Type casts rotation value to integer. int castRotation(dynamic v) => (v as num?)?.toInt() ?? 0; diff --git a/lib/src/api/nodes/list_view_node.dart b/lib/src/api/nodes/list_view_node.dart index 8bc06fd..cc35ce6 100644 --- a/lib/src/api/nodes/list_view_node.dart +++ b/lib/src/api/nodes/list_view_node.dart @@ -59,7 +59,13 @@ class ListViewNode extends SinglePlaceholderNode bool primary = false, ScrollViewKeyboardDismissBehaviorC keyboardDismissBehavior = ScrollViewKeyboardDismissBehaviorC.manual, - }) : super(children: [], allowedTypes: [], deniedTypes: []) { + }) : super( + children: [], + allowedTypes: [], + deniedTypes: [ + 'listView', + ], + ) { setChildrenMixin(children: children); setVariablesMixin(variables: variables); setClipMixin(clipsContent: clipsContent); @@ -82,6 +88,8 @@ class ListViewNode extends SinglePlaceholderNode @override Map toJson() => _$ListViewNodeToJson(this); + /// [returns] the appropriate alignment of the child based on the + /// [scrollDirection] and [reverse] properties. AlignmentModel childAlignment() { switch (scrollDirection) { case AxisC.horizontal: @@ -92,21 +100,45 @@ class ListViewNode extends SinglePlaceholderNode } } +/// Defines the type of separator to use between list view items. enum ListItemSeparator { + + /// A customizable divider. See [DividerNode] for more details. divider, + + /// A simple spacing between items. space; } +/// The properties of a [ListViewNode]. @JsonSerializable() class ListViewProperties with SerializableMixin, EquatableMixin { + + /// The number of items to display in the list view. Can be null if the list + /// is infinite. int? itemCount; + + /// The forced-size of each item in the list view in the scroll axis. double? itemExtent; + + /// The number of pixels by which to allow pre-rendering of items outside + /// the visible area. double? cacheExtent; + + /// The amount of pixels the spacing separator should have, if enabled. double separatorSpacing; + + /// The type of separator to use between list view items. ListItemSeparator separator; + + /// Whether to use a separator between list view items. bool hasSeparator; + + /// The properties of the divider to use as a separator between list view + /// items, if enabled. DividerProperties dividerProperties; + /// Creates a new [ListViewProperties]. ListViewProperties({ this.itemCount, this.itemExtent, @@ -117,6 +149,8 @@ class ListViewProperties with SerializableMixin, EquatableMixin { DividerProperties? dividerProperties, }) : dividerProperties = dividerProperties ?? DividerProperties(); + /// Creates a copy of this [ListViewProperties] with the specified parameters + /// overridden. ListViewProperties copyWith({ String? bodyId, int? itemCount, @@ -147,6 +181,7 @@ class ListViewProperties with SerializableMixin, EquatableMixin { @override Map toJson() => _$ListViewPropertiesToJson(this); + /// Creates a [ListViewProperties] from a JSON object. factory ListViewProperties.fromJson(Map json) => _$ListViewPropertiesFromJson(json);