From 0ad0a4f98020bce804871110f60442cd4f935c7e Mon Sep 17 00:00:00 2001 From: hmm hmm Date: Thu, 15 May 2025 21:02:53 -0500 Subject: [PATCH] add loading child widget to networkWidget --- .../stac_network_widget.dart | 4 +- .../stac_network_widget.freezed.dart | 44 +++++++++++++++---- .../stac_network_widget.g.dart | 2 + .../stac_network_widget_parser.dart | 11 +++-- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.dart b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.dart index af90fe4c..b2ee3d1e 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.dart @@ -10,8 +10,8 @@ part 'stac_network_widget.g.dart'; abstract class StacNetworkWidget with _$StacNetworkWidget { const factory StacNetworkWidget({ required StacNetworkRequest request, + Map? loading, }) = _StacNetworkWidget; - factory StacNetworkWidget.fromJson(Map json) => - _$StacNetworkWidgetFromJson(json); + factory StacNetworkWidget.fromJson(Map json) => _$StacNetworkWidgetFromJson(json); } diff --git a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.freezed.dart b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.freezed.dart index 629c7d1f..4c1c83e6 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.freezed.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.freezed.dart @@ -16,6 +16,7 @@ T _$identity(T value) => value; /// @nodoc mixin _$StacNetworkWidget { StacNetworkRequest get request; + Map? get loading; /// Create a copy of StacNetworkWidget /// with the given fields replaced by the non-null parameter values. @@ -33,16 +34,18 @@ mixin _$StacNetworkWidget { return identical(this, other) || (other.runtimeType == runtimeType && other is StacNetworkWidget && - (identical(other.request, request) || other.request == request)); + (identical(other.request, request) || other.request == request) && + const DeepCollectionEquality().equals(other.loading, loading)); } @JsonKey(includeFromJson: false, includeToJson: false) @override - int get hashCode => Object.hash(runtimeType, request); + int get hashCode => Object.hash( + runtimeType, request, const DeepCollectionEquality().hash(loading)); @override String toString() { - return 'StacNetworkWidget(request: $request)'; + return 'StacNetworkWidget(request: $request, loading: $loading)'; } } @@ -52,7 +55,7 @@ abstract mixin class $StacNetworkWidgetCopyWith<$Res> { StacNetworkWidget value, $Res Function(StacNetworkWidget) _then) = _$StacNetworkWidgetCopyWithImpl; @useResult - $Res call({StacNetworkRequest request}); + $Res call({StacNetworkRequest request, Map? loading}); $StacNetworkRequestCopyWith<$Res> get request; } @@ -71,12 +74,17 @@ class _$StacNetworkWidgetCopyWithImpl<$Res> @override $Res call({ Object? request = null, + Object? loading = freezed, }) { return _then(_self.copyWith( request: null == request ? _self.request : request // ignore: cast_nullable_to_non_nullable as StacNetworkRequest, + loading: freezed == loading + ? _self.loading + : loading // ignore: cast_nullable_to_non_nullable + as Map?, )); } @@ -94,12 +102,23 @@ class _$StacNetworkWidgetCopyWithImpl<$Res> /// @nodoc @JsonSerializable() class _StacNetworkWidget implements StacNetworkWidget { - const _StacNetworkWidget({required this.request}); + const _StacNetworkWidget( + {required this.request, final Map? loading}) + : _loading = loading; factory _StacNetworkWidget.fromJson(Map json) => _$StacNetworkWidgetFromJson(json); @override final StacNetworkRequest request; + final Map? _loading; + @override + Map? get loading { + final value = _loading; + if (value == null) return null; + if (_loading is EqualUnmodifiableMapView) return _loading; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } /// Create a copy of StacNetworkWidget /// with the given fields replaced by the non-null parameter values. @@ -121,16 +140,18 @@ class _StacNetworkWidget implements StacNetworkWidget { return identical(this, other) || (other.runtimeType == runtimeType && other is _StacNetworkWidget && - (identical(other.request, request) || other.request == request)); + (identical(other.request, request) || other.request == request) && + const DeepCollectionEquality().equals(other._loading, _loading)); } @JsonKey(includeFromJson: false, includeToJson: false) @override - int get hashCode => Object.hash(runtimeType, request); + int get hashCode => Object.hash( + runtimeType, request, const DeepCollectionEquality().hash(_loading)); @override String toString() { - return 'StacNetworkWidget(request: $request)'; + return 'StacNetworkWidget(request: $request, loading: $loading)'; } } @@ -142,7 +163,7 @@ abstract mixin class _$StacNetworkWidgetCopyWith<$Res> __$StacNetworkWidgetCopyWithImpl; @override @useResult - $Res call({StacNetworkRequest request}); + $Res call({StacNetworkRequest request, Map? loading}); @override $StacNetworkRequestCopyWith<$Res> get request; @@ -162,12 +183,17 @@ class __$StacNetworkWidgetCopyWithImpl<$Res> @pragma('vm:prefer-inline') $Res call({ Object? request = null, + Object? loading = freezed, }) { return _then(_StacNetworkWidget( request: null == request ? _self.request : request // ignore: cast_nullable_to_non_nullable as StacNetworkRequest, + loading: freezed == loading + ? _self._loading + : loading // ignore: cast_nullable_to_non_nullable + as Map?, )); } diff --git a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.g.dart b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.g.dart index 78516c54..2f331e20 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.g.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget.g.dart @@ -10,9 +10,11 @@ _StacNetworkWidget _$StacNetworkWidgetFromJson(Map json) => _StacNetworkWidget( request: StacNetworkRequest.fromJson(json['request'] as Map), + loading: json['loading'] as Map?, ); Map _$StacNetworkWidgetToJson(_StacNetworkWidget instance) => { 'request': instance.request, + 'loading': instance.loading, }; diff --git a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget_parser.dart index 000c2ee5..e927746c 100644 --- a/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget_parser.dart +++ b/packages/stac/lib/src/parsers/widgets/stac_network_widget/stac_network_widget_parser.dart @@ -11,11 +11,16 @@ class StacNetworkWidgetParser extends StacParser { String get type => WidgetType.networkWidget.name; @override - StacNetworkWidget getModel(Map json) => - StacNetworkWidget.fromJson(json); + StacNetworkWidget getModel(Map json) => StacNetworkWidget.fromJson(json); @override Widget parse(BuildContext context, StacNetworkWidget model) { - return Stac.fromNetwork(context: context, request: model.request); + return Stac.fromNetwork( + context: context, + request: model.request, + loadingWidget: (context) { + return Stac.fromJson(model.loading, context) ?? SizedBox(); + }, + ); } }