diff --git a/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.dart b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.dart new file mode 100644 index 0000000..4abf8bb --- /dev/null +++ b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../tender_approvals_data/tender_approvals_data.dart'; + +part 'tender_approvals_data_wrapper.freezed.dart'; +part 'tender_approvals_data_wrapper.g.dart'; + +@freezed +abstract class TenderApprovalsDataWrapper with _$TenderApprovalsDataWrapper { + const factory TenderApprovalsDataWrapper({ + required List? tenders, + }) = _TenderApprovalsDataWrapper; + + factory TenderApprovalsDataWrapper.fromJson(Map json) => + _$TenderApprovalsDataWrapperFromJson(json); +} diff --git a/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.freezed.dart b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.freezed.dart new file mode 100644 index 0000000..18f161b --- /dev/null +++ b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.freezed.dart @@ -0,0 +1,285 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'tender_approvals_data_wrapper.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +// dart format off +T _$identity(T value) => value; + +/// @nodoc +mixin _$TenderApprovalsDataWrapper { + + List? get tenders; +/// Create a copy of TenderApprovalsDataWrapper +/// with the given fields replaced by the non-null parameter values. +@JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +$TenderApprovalsDataWrapperCopyWith get copyWith => _$TenderApprovalsDataWrapperCopyWithImpl(this as TenderApprovalsDataWrapper, _$identity); + + /// Serializes this TenderApprovalsDataWrapper to a JSON map. + Map toJson(); + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsDataWrapper&&const DeepCollectionEquality().equals(other.tenders, tenders)); +} + +@JsonKey(includeFromJson: false, includeToJson: false) +@override +int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(tenders)); + +@override +String toString() { + return 'TenderApprovalsDataWrapper(tenders: $tenders)'; +} + + +} + +/// @nodoc +abstract mixin class $TenderApprovalsDataWrapperCopyWith<$Res> { + factory $TenderApprovalsDataWrapperCopyWith(TenderApprovalsDataWrapper value, $Res Function(TenderApprovalsDataWrapper) _then) = _$TenderApprovalsDataWrapperCopyWithImpl; +@useResult +$Res call({ + List? tenders +}); + + + + +} +/// @nodoc +class _$TenderApprovalsDataWrapperCopyWithImpl<$Res> + implements $TenderApprovalsDataWrapperCopyWith<$Res> { + _$TenderApprovalsDataWrapperCopyWithImpl(this._self, this._then); + + final TenderApprovalsDataWrapper _self; + final $Res Function(TenderApprovalsDataWrapper) _then; + +/// Create a copy of TenderApprovalsDataWrapper +/// with the given fields replaced by the non-null parameter values. +@pragma('vm:prefer-inline') @override $Res call({Object? tenders = freezed,}) { + return _then(_self.copyWith( +tenders: freezed == tenders ? _self.tenders : tenders // ignore: cast_nullable_to_non_nullable +as List?, + )); +} + +} + + +/// Adds pattern-matching-related methods to [TenderApprovalsDataWrapper]. +extension TenderApprovalsDataWrapperPatterns on TenderApprovalsDataWrapper { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _TenderApprovalsDataWrapper value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _TenderApprovalsDataWrapper value) $default,){ +final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _TenderApprovalsDataWrapper value)? $default,){ +final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( List? tenders)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper() when $default != null: +return $default(_that.tenders);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( List? tenders) $default,) {final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper(): +return $default(_that.tenders);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( List? tenders)? $default,) {final _that = this; +switch (_that) { +case _TenderApprovalsDataWrapper() when $default != null: +return $default(_that.tenders);case _: + return null; + +} +} + +} + +/// @nodoc +@JsonSerializable() + +class _TenderApprovalsDataWrapper implements TenderApprovalsDataWrapper { + const _TenderApprovalsDataWrapper({required final List? tenders}): _tenders = tenders; + factory _TenderApprovalsDataWrapper.fromJson(Map json) => _$TenderApprovalsDataWrapperFromJson(json); + + final List? _tenders; +@override List? get tenders { + final value = _tenders; + if (value == null) return null; + if (_tenders is EqualUnmodifiableListView) return _tenders; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); +} + + +/// Create a copy of TenderApprovalsDataWrapper +/// with the given fields replaced by the non-null parameter values. +@override @JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +_$TenderApprovalsDataWrapperCopyWith<_TenderApprovalsDataWrapper> get copyWith => __$TenderApprovalsDataWrapperCopyWithImpl<_TenderApprovalsDataWrapper>(this, _$identity); + +@override +Map toJson() { + return _$TenderApprovalsDataWrapperToJson(this, ); +} + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsDataWrapper&&const DeepCollectionEquality().equals(other._tenders, _tenders)); +} + +@JsonKey(includeFromJson: false, includeToJson: false) +@override +int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(_tenders)); + +@override +String toString() { + return 'TenderApprovalsDataWrapper(tenders: $tenders)'; +} + + +} + +/// @nodoc +abstract mixin class _$TenderApprovalsDataWrapperCopyWith<$Res> implements $TenderApprovalsDataWrapperCopyWith<$Res> { + factory _$TenderApprovalsDataWrapperCopyWith(_TenderApprovalsDataWrapper value, $Res Function(_TenderApprovalsDataWrapper) _then) = __$TenderApprovalsDataWrapperCopyWithImpl; +@override @useResult +$Res call({ + List? tenders +}); + + + + +} +/// @nodoc +class __$TenderApprovalsDataWrapperCopyWithImpl<$Res> + implements _$TenderApprovalsDataWrapperCopyWith<$Res> { + __$TenderApprovalsDataWrapperCopyWithImpl(this._self, this._then); + + final _TenderApprovalsDataWrapper _self; + final $Res Function(_TenderApprovalsDataWrapper) _then; + +/// Create a copy of TenderApprovalsDataWrapper +/// with the given fields replaced by the non-null parameter values. +@override @pragma('vm:prefer-inline') $Res call({Object? tenders = freezed,}) { + return _then(_TenderApprovalsDataWrapper( +tenders: freezed == tenders ? _self._tenders : tenders // ignore: cast_nullable_to_non_nullable +as List?, + )); +} + + +} + +// dart format on diff --git a/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.g.dart b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.g.dart new file mode 100644 index 0000000..2fc08c9 --- /dev/null +++ b/lib/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.g.dart @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'tender_approvals_data_wrapper.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_TenderApprovalsDataWrapper _$TenderApprovalsDataWrapperFromJson( + Map json, +) => _TenderApprovalsDataWrapper( + tenders: + (json['tenders'] as List?) + ?.map((e) => TenderApprovalsData.fromJson(e as Map)) + .toList(), +); + +Map _$TenderApprovalsDataWrapperToJson( + _TenderApprovalsDataWrapper instance, +) => {'tenders': instance.tenders}; diff --git a/lib/data/services/model/tender_approvals_response/tender_approvals_response.dart b/lib/data/services/model/tender_approvals_response/tender_approvals_response.dart index 954ee3d..5184d8e 100644 --- a/lib/data/services/model/tender_approvals_response/tender_approvals_response.dart +++ b/lib/data/services/model/tender_approvals_response/tender_approvals_response.dart @@ -1,4 +1,5 @@ import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:tm_app/data/services/model/tender_approvals_data_warpper/tender_approvals_data_wrapper.dart'; import '../error/error_model.dart'; import '../tender_approvals_data/tender_approvals_data.dart'; @@ -11,7 +12,7 @@ abstract class TenderApprovalsResponse with _$TenderApprovalsResponse { const factory TenderApprovalsResponse({ required bool? success, required ErrorModel? error, - required List? data, + required TenderApprovalsDataWrapper? data, }) = _TenderApprovalsResponse; factory TenderApprovalsResponse.fromJson(Map json) => diff --git a/lib/data/services/model/tender_approvals_response/tender_approvals_response.freezed.dart b/lib/data/services/model/tender_approvals_response/tender_approvals_response.freezed.dart index e940f27..c10bb4e 100644 --- a/lib/data/services/model/tender_approvals_response/tender_approvals_response.freezed.dart +++ b/lib/data/services/model/tender_approvals_response/tender_approvals_response.freezed.dart @@ -15,7 +15,7 @@ T _$identity(T value) => value; /// @nodoc mixin _$TenderApprovalsResponse { - bool? get success; ErrorModel? get error; List? get data; + bool? get success; ErrorModel? get error; TenderApprovalsDataWrapper? get data; /// Create a copy of TenderApprovalsResponse /// with the given fields replaced by the non-null parameter values. @JsonKey(includeFromJson: false, includeToJson: false) @@ -28,12 +28,12 @@ $TenderApprovalsResponseCopyWith get copyWith => _$Tend @override bool operator ==(Object other) { - return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&const DeepCollectionEquality().equals(other.data, data)); + return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data)); } @JsonKey(includeFromJson: false, includeToJson: false) @override -int get hashCode => Object.hash(runtimeType,success,error,const DeepCollectionEquality().hash(data)); +int get hashCode => Object.hash(runtimeType,success,error,data); @override String toString() { @@ -48,11 +48,11 @@ abstract mixin class $TenderApprovalsResponseCopyWith<$Res> { factory $TenderApprovalsResponseCopyWith(TenderApprovalsResponse value, $Res Function(TenderApprovalsResponse) _then) = _$TenderApprovalsResponseCopyWithImpl; @useResult $Res call({ - bool? success, ErrorModel? error, List? data + bool? success, ErrorModel? error, TenderApprovalsDataWrapper? data }); -$ErrorModelCopyWith<$Res>? get error; +$ErrorModelCopyWith<$Res>? get error;$TenderApprovalsDataWrapperCopyWith<$Res>? get data; } /// @nodoc @@ -70,7 +70,7 @@ class _$TenderApprovalsResponseCopyWithImpl<$Res> success: freezed == success ? _self.success : success // ignore: cast_nullable_to_non_nullable as bool?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable -as List?, +as TenderApprovalsDataWrapper?, )); } /// Create a copy of TenderApprovalsResponse @@ -85,6 +85,18 @@ $ErrorModelCopyWith<$Res>? get error { return $ErrorModelCopyWith<$Res>(_self.error!, (value) { return _then(_self.copyWith(error: value)); }); +}/// Create a copy of TenderApprovalsResponse +/// with the given fields replaced by the non-null parameter values. +@override +@pragma('vm:prefer-inline') +$TenderApprovalsDataWrapperCopyWith<$Res>? get data { + if (_self.data == null) { + return null; + } + + return $TenderApprovalsDataWrapperCopyWith<$Res>(_self.data!, (value) { + return _then(_self.copyWith(data: value)); + }); } } @@ -167,7 +179,7 @@ return $default(_that);case _: /// } /// ``` -@optionalTypeArgs TResult maybeWhen(TResult Function( bool? success, ErrorModel? error, List? data)? $default,{required TResult orElse(),}) {final _that = this; +@optionalTypeArgs TResult maybeWhen(TResult Function( bool? success, ErrorModel? error, TenderApprovalsDataWrapper? data)? $default,{required TResult orElse(),}) {final _that = this; switch (_that) { case _TenderApprovalsResponse() when $default != null: return $default(_that.success,_that.error,_that.data);case _: @@ -188,7 +200,7 @@ return $default(_that.success,_that.error,_that.data);case _: /// } /// ``` -@optionalTypeArgs TResult when(TResult Function( bool? success, ErrorModel? error, List? data) $default,) {final _that = this; +@optionalTypeArgs TResult when(TResult Function( bool? success, ErrorModel? error, TenderApprovalsDataWrapper? data) $default,) {final _that = this; switch (_that) { case _TenderApprovalsResponse(): return $default(_that.success,_that.error,_that.data);case _: @@ -208,7 +220,7 @@ return $default(_that.success,_that.error,_that.data);case _: /// } /// ``` -@optionalTypeArgs TResult? whenOrNull(TResult? Function( bool? success, ErrorModel? error, List? data)? $default,) {final _that = this; +@optionalTypeArgs TResult? whenOrNull(TResult? Function( bool? success, ErrorModel? error, TenderApprovalsDataWrapper? data)? $default,) {final _that = this; switch (_that) { case _TenderApprovalsResponse() when $default != null: return $default(_that.success,_that.error,_that.data);case _: @@ -223,20 +235,12 @@ return $default(_that.success,_that.error,_that.data);case _: @JsonSerializable() class _TenderApprovalsResponse implements TenderApprovalsResponse { - const _TenderApprovalsResponse({required this.success, required this.error, required final List? data}): _data = data; + const _TenderApprovalsResponse({required this.success, required this.error, required this.data}); factory _TenderApprovalsResponse.fromJson(Map json) => _$TenderApprovalsResponseFromJson(json); @override final bool? success; @override final ErrorModel? error; - final List? _data; -@override List? get data { - final value = _data; - if (value == null) return null; - if (_data is EqualUnmodifiableListView) return _data; - // ignore: implicit_dynamic_type - return EqualUnmodifiableListView(value); -} - +@override final TenderApprovalsDataWrapper? data; /// Create a copy of TenderApprovalsResponse /// with the given fields replaced by the non-null parameter values. @@ -251,12 +255,12 @@ Map toJson() { @override bool operator ==(Object other) { - return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&const DeepCollectionEquality().equals(other._data, _data)); + return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data)); } @JsonKey(includeFromJson: false, includeToJson: false) @override -int get hashCode => Object.hash(runtimeType,success,error,const DeepCollectionEquality().hash(_data)); +int get hashCode => Object.hash(runtimeType,success,error,data); @override String toString() { @@ -271,11 +275,11 @@ abstract mixin class _$TenderApprovalsResponseCopyWith<$Res> implements $TenderA factory _$TenderApprovalsResponseCopyWith(_TenderApprovalsResponse value, $Res Function(_TenderApprovalsResponse) _then) = __$TenderApprovalsResponseCopyWithImpl; @override @useResult $Res call({ - bool? success, ErrorModel? error, List? data + bool? success, ErrorModel? error, TenderApprovalsDataWrapper? data }); -@override $ErrorModelCopyWith<$Res>? get error; +@override $ErrorModelCopyWith<$Res>? get error;@override $TenderApprovalsDataWrapperCopyWith<$Res>? get data; } /// @nodoc @@ -292,8 +296,8 @@ class __$TenderApprovalsResponseCopyWithImpl<$Res> return _then(_TenderApprovalsResponse( success: freezed == success ? _self.success : success // ignore: cast_nullable_to_non_nullable as bool?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable -as ErrorModel?,data: freezed == data ? _self._data : data // ignore: cast_nullable_to_non_nullable -as List?, +as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable +as TenderApprovalsDataWrapper?, )); } @@ -309,6 +313,18 @@ $ErrorModelCopyWith<$Res>? get error { return $ErrorModelCopyWith<$Res>(_self.error!, (value) { return _then(_self.copyWith(error: value)); }); +}/// Create a copy of TenderApprovalsResponse +/// with the given fields replaced by the non-null parameter values. +@override +@pragma('vm:prefer-inline') +$TenderApprovalsDataWrapperCopyWith<$Res>? get data { + if (_self.data == null) { + return null; + } + + return $TenderApprovalsDataWrapperCopyWith<$Res>(_self.data!, (value) { + return _then(_self.copyWith(data: value)); + }); } } diff --git a/lib/data/services/model/tender_approvals_response/tender_approvals_response.g.dart b/lib/data/services/model/tender_approvals_response/tender_approvals_response.g.dart index d3d96ae..1d43b8e 100644 --- a/lib/data/services/model/tender_approvals_response/tender_approvals_response.g.dart +++ b/lib/data/services/model/tender_approvals_response/tender_approvals_response.g.dart @@ -15,9 +15,11 @@ _TenderApprovalsResponse _$TenderApprovalsResponseFromJson( ? null : ErrorModel.fromJson(json['error'] as Map), data: - (json['data'] as List?) - ?.map((e) => TenderApprovalsData.fromJson(e as Map)) - .toList(), + json['data'] == null + ? null + : TenderApprovalsDataWrapper.fromJson( + json['data'] as Map, + ), ); Map _$TenderApprovalsResponseToJson( diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 327433a..107333f 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -35,6 +35,9 @@ class $AssetsIconsGen { /// File path: assets/icons/arrow-right.svg String get arrowRight => 'assets/icons/arrow-right.svg'; + /// File path: assets/icons/arrow_down_small.svg + String get arrowDownSmall => 'assets/icons/arrow_down_small.svg'; + /// File path: assets/icons/arrows.svg String get arrows => 'assets/icons/arrows.svg'; @@ -129,6 +132,7 @@ class $AssetsIconsGen { arrowLeftSmall, arrowRightSmall, arrowRight, + arrowDownSmall, arrows, calendar, closeCircle, @@ -163,6 +167,9 @@ class $AssetsIconsGen { class $AssetsPngsGen { const $AssetsPngsGen(); + /// File path: assets/pngs/app_logo.png + AssetGenImage get appLogo => const AssetGenImage('assets/pngs/app_logo.png'); + /// File path: assets/pngs/forgot_password.png AssetGenImage get forgotPassword => const AssetGenImage('assets/pngs/forgot_password.png'); @@ -175,7 +182,12 @@ class $AssetsPngsGen { const AssetGenImage('assets/pngs/web_login_image.png'); /// List of all assets - List get values => [forgotPassword, logo, webLoginImage]; + List get values => [ + appLogo, + forgotPassword, + logo, + webLoginImage, + ]; } class $AssetsSvgsGen { diff --git a/lib/view_models/home_view_model.dart b/lib/view_models/home_view_model.dart index 0eba9d9..99aeaf9 100644 --- a/lib/view_models/home_view_model.dart +++ b/lib/view_models/home_view_model.dart @@ -106,13 +106,13 @@ class HomeViewModel with ChangeNotifier { data = result.value; _errorMessage = null; - if (data?.data?.isEmpty ?? true) { + if (data?.data?.tenders!.isEmpty ?? true) { // اگه YourTenders خالی بود → برو سمت Recommended await getHomeRecommandTenders(reset: true); } else { _tenders.clear(); _tenders.addAll( - data!.data!.map((e) => e.tender).whereType(), + data!.data!.tenders!.map((e) => e.tender).whereType(), ); } diff --git a/lib/views/home/pages/d_home_page.dart b/lib/views/home/pages/d_home_page.dart index b9b684f..7fd85d0 100644 --- a/lib/views/home/pages/d_home_page.dart +++ b/lib/views/home/pages/d_home_page.dart @@ -169,7 +169,7 @@ class DesktopHomePage extends StatelessWidget { } Widget _yourTenderText(HomeViewModel homeViewModel) { - final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false; + final isYourTenders = homeViewModel.data?.data?.tenders!.isNotEmpty ?? false; return ConstrainedBox( constraints: BoxConstraints(maxWidth: 740), child: Align( diff --git a/lib/views/home/pages/m_home_page.dart b/lib/views/home/pages/m_home_page.dart index 20aad8e..3c33a45 100644 --- a/lib/views/home/pages/m_home_page.dart +++ b/lib/views/home/pages/m_home_page.dart @@ -163,7 +163,7 @@ class MobileHomePage extends StatelessWidget { } Widget _yourTenderText(HomeViewModel homeViewModel) { - final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false; + final isYourTenders = homeViewModel.data?.data?.tenders!.isNotEmpty ?? false; return Padding( padding: EdgeInsets.symmetric(horizontal: 24.0.w()), child: Text( diff --git a/lib/views/home/pages/t_home_page.dart b/lib/views/home/pages/t_home_page.dart index f9e7cd1..5a4e962 100644 --- a/lib/views/home/pages/t_home_page.dart +++ b/lib/views/home/pages/t_home_page.dart @@ -195,7 +195,7 @@ class TabletHomePage extends StatelessWidget { } Widget _yourTenderText(HomeViewModel homeViewModel) { - final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false; + final isYourTenders = homeViewModel.data?.data?.tenders!.isNotEmpty ?? false; return Text( isYourTenders ? HomeStrings.yourTenders : HomeStrings.recommendedTenders, style: TextStyle( diff --git a/lib/views/your_tenders/widgets/tenders_submitted.dart b/lib/views/your_tenders/widgets/tenders_submitted.dart index f357642..fd1bea8 100644 --- a/lib/views/your_tenders/widgets/tenders_submitted.dart +++ b/lib/views/your_tenders/widgets/tenders_submitted.dart @@ -21,9 +21,9 @@ class TendersSubmitted extends StatelessWidget { ? const Center(child: Text('No submitted projects yet.')) : ListView.builder( padding: const EdgeInsets.only(top: 20), - itemCount: approvedTenders.data!.length, + itemCount: approvedTenders.data!.tenders!.length, itemBuilder: (context, index) { - final tender = approvedTenders.data![index]; + final tender = approvedTenders.data!.tenders![index]; return TenderCard( date: tender.createdAt!.toString(), title: tender.tender!.title!,