added approved api
This commit is contained in:
@@ -41,7 +41,7 @@ List<SingleChildWidget> get apiClients {
|
||||
create: (context) => TenderDetailService(networkManager: context.read()),
|
||||
),
|
||||
|
||||
Provider(create: (context) => YourTendersService()),
|
||||
Provider(create: (context) => YourTendersService(networkManager: context.read())),
|
||||
Provider(
|
||||
create: (context) => TendersService(networkManager: context.read()),
|
||||
),
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
import 'package:tm_app/core/utils/result.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_request/your_tenders_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_response/your_tender_model_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
import 'package:tm_app/data/services/your_tenders_service.dart';
|
||||
|
||||
class YourTendersRepository {
|
||||
final YourTendersService yourTendersService;
|
||||
YourTendersRepository({required this.yourTendersService});
|
||||
|
||||
Future<Result<YourTendersResponseModel>> getYourTenders({
|
||||
required YourTendersRequestModel request,
|
||||
}) {
|
||||
return yourTendersService.getYourTenders(request: request);
|
||||
Future<Result<TenderApprovalsResponse>> getApprovedTenders() {
|
||||
return yourTendersService.getApprovedTenders();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// ignore_for_file: invalid_annotation_target
|
||||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../tender_data/tender_data.dart';
|
||||
|
||||
part 'tender_approvals_data.freezed.dart';
|
||||
part 'tender_approvals_data.g.dart';
|
||||
|
||||
@freezed
|
||||
abstract class TenderApprovalsData with _$TenderApprovalsData {
|
||||
const factory TenderApprovalsData({
|
||||
required String? id,
|
||||
required String status,
|
||||
@JsonKey(name: 'tender_id') required String? tenderId,
|
||||
@JsonKey(name: 'company_id') required String? companyId,
|
||||
@JsonKey(name: 'submission_mode') required String? submissionMode,
|
||||
@JsonKey(name: 'created_at') required int? createdAt,
|
||||
required TenderData? tender,
|
||||
}) = _TenderApprovalsData;
|
||||
|
||||
factory TenderApprovalsData.fromJson(Map<String, Object?> json) =>
|
||||
_$TenderApprovalsDataFromJson(json);
|
||||
}
|
||||
@@ -0,0 +1,319 @@
|
||||
// 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.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
/// @nodoc
|
||||
mixin _$TenderApprovalsData {
|
||||
|
||||
String? get id; String get status;@JsonKey(name: 'tender_id') String? get tenderId;@JsonKey(name: 'company_id') String? get companyId;@JsonKey(name: 'submission_mode') String? get submissionMode;@JsonKey(name: 'created_at') int? get createdAt; TenderData? get tender;
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderApprovalsDataCopyWith<TenderApprovalsData> get copyWith => _$TenderApprovalsDataCopyWithImpl<TenderApprovalsData>(this as TenderApprovalsData, _$identity);
|
||||
|
||||
/// Serializes this TenderApprovalsData to a JSON map.
|
||||
Map<String, dynamic> toJson();
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsData&&(identical(other.id, id) || other.id == id)&&(identical(other.status, status) || other.status == status)&&(identical(other.tenderId, tenderId) || other.tenderId == tenderId)&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.submissionMode, submissionMode) || other.submissionMode == submissionMode)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.tender, tender) || other.tender == tender));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,id,status,tenderId,companyId,submissionMode,createdAt,tender);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsData(id: $id, status: $status, tenderId: $tenderId, companyId: $companyId, submissionMode: $submissionMode, createdAt: $createdAt, tender: $tender)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $TenderApprovalsDataCopyWith<$Res> {
|
||||
factory $TenderApprovalsDataCopyWith(TenderApprovalsData value, $Res Function(TenderApprovalsData) _then) = _$TenderApprovalsDataCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
String? id, String status,@JsonKey(name: 'tender_id') String? tenderId,@JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'submission_mode') String? submissionMode,@JsonKey(name: 'created_at') int? createdAt, TenderData? tender
|
||||
});
|
||||
|
||||
|
||||
$TenderDataCopyWith<$Res>? get tender;
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$TenderApprovalsDataCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsDataCopyWith<$Res> {
|
||||
_$TenderApprovalsDataCopyWithImpl(this._self, this._then);
|
||||
|
||||
final TenderApprovalsData _self;
|
||||
final $Res Function(TenderApprovalsData) _then;
|
||||
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = freezed,Object? status = null,Object? tenderId = freezed,Object? companyId = freezed,Object? submissionMode = freezed,Object? createdAt = freezed,Object? tender = freezed,}) {
|
||||
return _then(_self.copyWith(
|
||||
id: freezed == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
|
||||
as String?,status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as String,tenderId: freezed == tenderId ? _self.tenderId : tenderId // ignore: cast_nullable_to_non_nullable
|
||||
as String?,companyId: freezed == companyId ? _self.companyId : companyId // ignore: cast_nullable_to_non_nullable
|
||||
as String?,submissionMode: freezed == submissionMode ? _self.submissionMode : submissionMode // ignore: cast_nullable_to_non_nullable
|
||||
as String?,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
|
||||
as int?,tender: freezed == tender ? _self.tender : tender // ignore: cast_nullable_to_non_nullable
|
||||
as TenderData?,
|
||||
));
|
||||
}
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderDataCopyWith<$Res>? get tender {
|
||||
if (_self.tender == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $TenderDataCopyWith<$Res>(_self.tender!, (value) {
|
||||
return _then(_self.copyWith(tender: value));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsData].
|
||||
extension TenderApprovalsDataPatterns on TenderApprovalsData {
|
||||
/// 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 extends Object?>(TResult Function( _TenderApprovalsData value)? $default,{required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData() 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 extends Object?>(TResult Function( _TenderApprovalsData value) $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData():
|
||||
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 extends Object?>(TResult? Function( _TenderApprovalsData value)? $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData() 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 extends Object?>(TResult Function( String? id, String status, @JsonKey(name: 'tender_id') String? tenderId, @JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'submission_mode') String? submissionMode, @JsonKey(name: 'created_at') int? createdAt, TenderData? tender)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData() when $default != null:
|
||||
return $default(_that.id,_that.status,_that.tenderId,_that.companyId,_that.submissionMode,_that.createdAt,_that.tender);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 extends Object?>(TResult Function( String? id, String status, @JsonKey(name: 'tender_id') String? tenderId, @JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'submission_mode') String? submissionMode, @JsonKey(name: 'created_at') int? createdAt, TenderData? tender) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData():
|
||||
return $default(_that.id,_that.status,_that.tenderId,_that.companyId,_that.submissionMode,_that.createdAt,_that.tender);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 extends Object?>(TResult? Function( String? id, String status, @JsonKey(name: 'tender_id') String? tenderId, @JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'submission_mode') String? submissionMode, @JsonKey(name: 'created_at') int? createdAt, TenderData? tender)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsData() when $default != null:
|
||||
return $default(_that.id,_that.status,_that.tenderId,_that.companyId,_that.submissionMode,_that.createdAt,_that.tender);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
|
||||
class _TenderApprovalsData implements TenderApprovalsData {
|
||||
const _TenderApprovalsData({required this.id, required this.status, @JsonKey(name: 'tender_id') required this.tenderId, @JsonKey(name: 'company_id') required this.companyId, @JsonKey(name: 'submission_mode') required this.submissionMode, @JsonKey(name: 'created_at') required this.createdAt, required this.tender});
|
||||
factory _TenderApprovalsData.fromJson(Map<String, dynamic> json) => _$TenderApprovalsDataFromJson(json);
|
||||
|
||||
@override final String? id;
|
||||
@override final String status;
|
||||
@override@JsonKey(name: 'tender_id') final String? tenderId;
|
||||
@override@JsonKey(name: 'company_id') final String? companyId;
|
||||
@override@JsonKey(name: 'submission_mode') final String? submissionMode;
|
||||
@override@JsonKey(name: 'created_at') final int? createdAt;
|
||||
@override final TenderData? tender;
|
||||
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$TenderApprovalsDataCopyWith<_TenderApprovalsData> get copyWith => __$TenderApprovalsDataCopyWithImpl<_TenderApprovalsData>(this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$TenderApprovalsDataToJson(this, );
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsData&&(identical(other.id, id) || other.id == id)&&(identical(other.status, status) || other.status == status)&&(identical(other.tenderId, tenderId) || other.tenderId == tenderId)&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.submissionMode, submissionMode) || other.submissionMode == submissionMode)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.tender, tender) || other.tender == tender));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,id,status,tenderId,companyId,submissionMode,createdAt,tender);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsData(id: $id, status: $status, tenderId: $tenderId, companyId: $companyId, submissionMode: $submissionMode, createdAt: $createdAt, tender: $tender)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$TenderApprovalsDataCopyWith<$Res> implements $TenderApprovalsDataCopyWith<$Res> {
|
||||
factory _$TenderApprovalsDataCopyWith(_TenderApprovalsData value, $Res Function(_TenderApprovalsData) _then) = __$TenderApprovalsDataCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
String? id, String status,@JsonKey(name: 'tender_id') String? tenderId,@JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'submission_mode') String? submissionMode,@JsonKey(name: 'created_at') int? createdAt, TenderData? tender
|
||||
});
|
||||
|
||||
|
||||
@override $TenderDataCopyWith<$Res>? get tender;
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$TenderApprovalsDataCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsDataCopyWith<$Res> {
|
||||
__$TenderApprovalsDataCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _TenderApprovalsData _self;
|
||||
final $Res Function(_TenderApprovalsData) _then;
|
||||
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = freezed,Object? status = null,Object? tenderId = freezed,Object? companyId = freezed,Object? submissionMode = freezed,Object? createdAt = freezed,Object? tender = freezed,}) {
|
||||
return _then(_TenderApprovalsData(
|
||||
id: freezed == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
|
||||
as String?,status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as String,tenderId: freezed == tenderId ? _self.tenderId : tenderId // ignore: cast_nullable_to_non_nullable
|
||||
as String?,companyId: freezed == companyId ? _self.companyId : companyId // ignore: cast_nullable_to_non_nullable
|
||||
as String?,submissionMode: freezed == submissionMode ? _self.submissionMode : submissionMode // ignore: cast_nullable_to_non_nullable
|
||||
as String?,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
|
||||
as int?,tender: freezed == tender ? _self.tender : tender // ignore: cast_nullable_to_non_nullable
|
||||
as TenderData?,
|
||||
));
|
||||
}
|
||||
|
||||
/// Create a copy of TenderApprovalsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderDataCopyWith<$Res>? get tender {
|
||||
if (_self.tender == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $TenderDataCopyWith<$Res>(_self.tender!, (value) {
|
||||
return _then(_self.copyWith(tender: value));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// dart format on
|
||||
@@ -0,0 +1,33 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'tender_approvals_data.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
_TenderApprovalsData _$TenderApprovalsDataFromJson(Map<String, dynamic> json) =>
|
||||
_TenderApprovalsData(
|
||||
id: json['id'] as String?,
|
||||
status: json['status'] as String,
|
||||
tenderId: json['tender_id'] as String?,
|
||||
companyId: json['company_id'] as String?,
|
||||
submissionMode: json['submission_mode'] as String?,
|
||||
createdAt: (json['created_at'] as num?)?.toInt(),
|
||||
tender:
|
||||
json['tender'] == null
|
||||
? null
|
||||
: TenderData.fromJson(json['tender'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TenderApprovalsDataToJson(
|
||||
_TenderApprovalsData instance,
|
||||
) => <String, dynamic>{
|
||||
'id': instance.id,
|
||||
'status': instance.status,
|
||||
'tender_id': instance.tenderId,
|
||||
'company_id': instance.companyId,
|
||||
'submission_mode': instance.submissionMode,
|
||||
'created_at': instance.createdAt,
|
||||
'tender': instance.tender,
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
// ignore_for_file: invalid_annotation_target
|
||||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../error/error_model.dart';
|
||||
import '../tender_approvals_data/tender_approvals_data.dart';
|
||||
|
||||
part 'tender_approvals_response.freezed.dart';
|
||||
part 'tender_approvals_response.g.dart';
|
||||
|
||||
@freezed
|
||||
abstract class TenderApprovalsResponse with _$TenderApprovalsResponse {
|
||||
const factory TenderApprovalsResponse({
|
||||
required String? message,
|
||||
required bool? success,
|
||||
required ErrorModel? error,
|
||||
required List<TenderApprovalsData>? data,
|
||||
}) = _TenderApprovalsResponse;
|
||||
|
||||
factory TenderApprovalsResponse.fromJson(Map<String, Object?> json) =>
|
||||
_$TenderApprovalsResponseFromJson(json);
|
||||
}
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
// 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_response.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
/// @nodoc
|
||||
mixin _$TenderApprovalsResponse {
|
||||
|
||||
String? get message; bool? get success; ErrorModel? get error; List<TenderApprovalsData>? get data;
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderApprovalsResponseCopyWith<TenderApprovalsResponse> get copyWith => _$TenderApprovalsResponseCopyWithImpl<TenderApprovalsResponse>(this as TenderApprovalsResponse, _$identity);
|
||||
|
||||
/// Serializes this TenderApprovalsResponse to a JSON map.
|
||||
Map<String, dynamic> toJson();
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsResponse&&(identical(other.message, message) || other.message == message)&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&const DeepCollectionEquality().equals(other.data, data));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,message,success,error,const DeepCollectionEquality().hash(data));
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsResponse(message: $message, success: $success, error: $error, data: $data)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $TenderApprovalsResponseCopyWith<$Res> {
|
||||
factory $TenderApprovalsResponseCopyWith(TenderApprovalsResponse value, $Res Function(TenderApprovalsResponse) _then) = _$TenderApprovalsResponseCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
String? message, bool? success, ErrorModel? error, List<TenderApprovalsData>? data
|
||||
});
|
||||
|
||||
|
||||
$ErrorModelCopyWith<$Res>? get error;
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$TenderApprovalsResponseCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsResponseCopyWith<$Res> {
|
||||
_$TenderApprovalsResponseCopyWithImpl(this._self, this._then);
|
||||
|
||||
final TenderApprovalsResponse _self;
|
||||
final $Res Function(TenderApprovalsResponse) _then;
|
||||
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? message = freezed,Object? success = freezed,Object? error = freezed,Object? data = freezed,}) {
|
||||
return _then(_self.copyWith(
|
||||
message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
|
||||
as String?,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<TenderApprovalsData>?,
|
||||
));
|
||||
}
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$ErrorModelCopyWith<$Res>? get error {
|
||||
if (_self.error == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $ErrorModelCopyWith<$Res>(_self.error!, (value) {
|
||||
return _then(_self.copyWith(error: value));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsResponse].
|
||||
extension TenderApprovalsResponsePatterns on TenderApprovalsResponse {
|
||||
/// 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 extends Object?>(TResult Function( _TenderApprovalsResponse value)? $default,{required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse() 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 extends Object?>(TResult Function( _TenderApprovalsResponse value) $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse():
|
||||
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 extends Object?>(TResult? Function( _TenderApprovalsResponse value)? $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse() 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 extends Object?>(TResult Function( String? message, bool? success, ErrorModel? error, List<TenderApprovalsData>? data)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse() when $default != null:
|
||||
return $default(_that.message,_that.success,_that.error,_that.data);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 extends Object?>(TResult Function( String? message, bool? success, ErrorModel? error, List<TenderApprovalsData>? data) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse():
|
||||
return $default(_that.message,_that.success,_that.error,_that.data);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 extends Object?>(TResult? Function( String? message, bool? success, ErrorModel? error, List<TenderApprovalsData>? data)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsResponse() when $default != null:
|
||||
return $default(_that.message,_that.success,_that.error,_that.data);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
|
||||
class _TenderApprovalsResponse implements TenderApprovalsResponse {
|
||||
const _TenderApprovalsResponse({required this.message, required this.success, required this.error, required final List<TenderApprovalsData>? data}): _data = data;
|
||||
factory _TenderApprovalsResponse.fromJson(Map<String, dynamic> json) => _$TenderApprovalsResponseFromJson(json);
|
||||
|
||||
@override final String? message;
|
||||
@override final bool? success;
|
||||
@override final ErrorModel? error;
|
||||
final List<TenderApprovalsData>? _data;
|
||||
@override List<TenderApprovalsData>? get data {
|
||||
final value = _data;
|
||||
if (value == null) return null;
|
||||
if (_data is EqualUnmodifiableListView) return _data;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(value);
|
||||
}
|
||||
|
||||
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$TenderApprovalsResponseCopyWith<_TenderApprovalsResponse> get copyWith => __$TenderApprovalsResponseCopyWithImpl<_TenderApprovalsResponse>(this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$TenderApprovalsResponseToJson(this, );
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsResponse&&(identical(other.message, message) || other.message == message)&&(identical(other.success, success) || other.success == success)&&(identical(other.error, error) || other.error == error)&&const DeepCollectionEquality().equals(other._data, _data));
|
||||
}
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,message,success,error,const DeepCollectionEquality().hash(_data));
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsResponse(message: $message, success: $success, error: $error, data: $data)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$TenderApprovalsResponseCopyWith<$Res> implements $TenderApprovalsResponseCopyWith<$Res> {
|
||||
factory _$TenderApprovalsResponseCopyWith(_TenderApprovalsResponse value, $Res Function(_TenderApprovalsResponse) _then) = __$TenderApprovalsResponseCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
String? message, bool? success, ErrorModel? error, List<TenderApprovalsData>? data
|
||||
});
|
||||
|
||||
|
||||
@override $ErrorModelCopyWith<$Res>? get error;
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$TenderApprovalsResponseCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsResponseCopyWith<$Res> {
|
||||
__$TenderApprovalsResponseCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _TenderApprovalsResponse _self;
|
||||
final $Res Function(_TenderApprovalsResponse) _then;
|
||||
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? message = freezed,Object? success = freezed,Object? error = freezed,Object? data = freezed,}) {
|
||||
return _then(_TenderApprovalsResponse(
|
||||
message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
|
||||
as String?,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<TenderApprovalsData>?,
|
||||
));
|
||||
}
|
||||
|
||||
/// Create a copy of TenderApprovalsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$ErrorModelCopyWith<$Res>? get error {
|
||||
if (_self.error == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $ErrorModelCopyWith<$Res>(_self.error!, (value) {
|
||||
return _then(_self.copyWith(error: value));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// dart format on
|
||||
@@ -0,0 +1,31 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'tender_approvals_response.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
_TenderApprovalsResponse _$TenderApprovalsResponseFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _TenderApprovalsResponse(
|
||||
message: json['message'] as String?,
|
||||
success: json['success'] as bool?,
|
||||
error:
|
||||
json['error'] == null
|
||||
? null
|
||||
: ErrorModel.fromJson(json['error'] as Map<String, dynamic>),
|
||||
data:
|
||||
(json['data'] as List<dynamic>?)
|
||||
?.map((e) => TenderApprovalsData.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TenderApprovalsResponseToJson(
|
||||
_TenderApprovalsResponse instance,
|
||||
) => <String, dynamic>{
|
||||
'message': instance.message,
|
||||
'success': instance.success,
|
||||
'error': instance.error,
|
||||
'data': instance.data,
|
||||
};
|
||||
@@ -1,16 +1,31 @@
|
||||
import 'dart:convert';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:tm_app/core/utils/logger.dart';
|
||||
import 'package:tm_app/core/utils/result.dart';
|
||||
import 'package:tm_app/data/services/mock_data/mock_your_tenders_data.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_request/your_tenders_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_response/your_tender_model_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
|
||||
import '../../../core/network/network_manager.dart';
|
||||
|
||||
class YourTendersService {
|
||||
Future<Result<YourTendersResponseModel>> getYourTenders({
|
||||
required YourTendersRequestModel request,
|
||||
}) async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
return Result.ok(
|
||||
YourTendersResponseModel.fromJson(jsonDecode(mockYourTendersData)),
|
||||
YourTendersService({required NetworkManager networkManager})
|
||||
: _networkManager = networkManager;
|
||||
|
||||
final NetworkManager _networkManager;
|
||||
|
||||
Future<Result<TenderApprovalsResponse>> getApprovedTenders() async {
|
||||
try {
|
||||
final result = await _networkManager.makeRequest(
|
||||
'/api/v1/tender-approvals?status=approved',
|
||||
(json) => TenderApprovalsResponse.fromJson(json),
|
||||
method: 'GET',
|
||||
);
|
||||
|
||||
return result;
|
||||
} on DioException catch (e) {
|
||||
appLogger.error('get approved tenders failed: $e');
|
||||
return Result.error(e);
|
||||
} on Exception catch (e, stackTrace) {
|
||||
appLogger.error('get approved tenders failed: $e', stackTrace: stackTrace);
|
||||
return Result.error(Exception(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,30 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/utils/result.dart';
|
||||
import 'package:tm_app/data/repositories/your_tenders_repository.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_request/your_tenders_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/your_tender_model_response/your_tender_model_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
|
||||
class YourTendersViewModel with ChangeNotifier {
|
||||
final YourTendersRepository yourTendersRepository;
|
||||
YourTendersViewModel({required this.yourTendersRepository}) {
|
||||
getTenders();
|
||||
getApprovedTenders();
|
||||
}
|
||||
|
||||
bool isLoading = false;
|
||||
String? errorMessage;
|
||||
YourTendersResponseModel? data;
|
||||
TenderApprovalsResponse? data;
|
||||
|
||||
Future<void> getTenders() async {
|
||||
Future<void> getApprovedTenders() async {
|
||||
isLoading = true;
|
||||
notifyListeners();
|
||||
|
||||
final result = await yourTendersRepository.getYourTenders(
|
||||
request: const YourTendersRequestModel(id: '1'),
|
||||
);
|
||||
final result = await yourTendersRepository.getApprovedTenders();
|
||||
|
||||
switch (result) {
|
||||
case Ok<YourTendersResponseModel>():
|
||||
case Ok<TenderApprovalsResponse>():
|
||||
data = result.value;
|
||||
errorMessage = null;
|
||||
break;
|
||||
case Error<YourTendersResponseModel>():
|
||||
case Error<TenderApprovalsResponse>():
|
||||
errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
||||
controller = TabController(length: 2, vsync: this);
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.read<YourTendersViewModel>().getTenders();
|
||||
context.read<YourTendersViewModel>().getApprovedTenders();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -72,12 +72,11 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
||||
controller: controller,
|
||||
children: [
|
||||
ApprovedTenders(
|
||||
approvedTenders:
|
||||
viewModel.data?.approvedTenders ?? [],
|
||||
approvedTenders: viewModel.data!,
|
||||
),
|
||||
TendersSubmitted(
|
||||
tendersSubmitted:
|
||||
viewModel.data?.tendersSubmitted ?? [],
|
||||
[],
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -25,7 +25,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage>
|
||||
controller = TabController(length: 2, vsync: this);
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.read<YourTendersViewModel>().getTenders();
|
||||
context.read<YourTendersViewModel>().getApprovedTenders();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -65,10 +65,10 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage>
|
||||
controller: controller,
|
||||
children: [
|
||||
ApprovedTenders(
|
||||
approvedTenders: viewModel.data?.approvedTenders ?? [],
|
||||
approvedTenders: viewModel.data!,
|
||||
),
|
||||
TendersSubmitted(
|
||||
tendersSubmitted: viewModel.data?.tendersSubmitted ?? [],
|
||||
tendersSubmitted: [],
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -25,7 +25,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
controller = TabController(length: 2, vsync: this);
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.read<YourTendersViewModel>().getTenders();
|
||||
context.read<YourTendersViewModel>().getApprovedTenders();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -72,12 +72,10 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
controller: controller,
|
||||
children: [
|
||||
ApprovedTenders(
|
||||
approvedTenders:
|
||||
viewModel.data?.approvedTenders ?? [],
|
||||
approvedTenders: viewModel.data!,
|
||||
),
|
||||
TendersSubmitted(
|
||||
tendersSubmitted:
|
||||
viewModel.data?.tendersSubmitted ?? [],
|
||||
tendersSubmitted: [],
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -1,58 +1,57 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||
|
||||
import '../../../data/services/model/your_tender_model/your_tender_model.dart';
|
||||
|
||||
class ApprovedTenders extends StatelessWidget {
|
||||
const ApprovedTenders({required this.approvedTenders, super.key});
|
||||
|
||||
final List<YourTenderModel> approvedTenders;
|
||||
final TenderApprovalsResponse approvedTenders;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListView.builder(
|
||||
padding: const EdgeInsets.only(top: 20),
|
||||
itemCount: approvedTenders.length,
|
||||
itemCount: approvedTenders.data!.length,
|
||||
itemBuilder: (context, index) {
|
||||
final tender = approvedTenders[index];
|
||||
final tender = approvedTenders.data![index];
|
||||
return TenderCard(
|
||||
date: tender.date,
|
||||
title: tender.title,
|
||||
description: tender.description,
|
||||
location: tender.location,
|
||||
countryFlag: tender.countryFlag,
|
||||
date: tender.createdAt!.toString(),
|
||||
title: tender.tender!.title!,
|
||||
description: tender.tender!.description!,
|
||||
location: tender.tender!.countryCode!,
|
||||
countryFlag: AssetsManager.seFlag,
|
||||
status: tender.status,
|
||||
projectStatus: tender.projectStatus,
|
||||
projectStatus: tender.tender!.status!,
|
||||
backgroundColor:
|
||||
tender.status == 'Won'
|
||||
? AppColors.green0
|
||||
: tender.status == 'Completed'
|
||||
: tender.status == 'approved'
|
||||
? AppColors.grey0
|
||||
: AppColors.red0.withValues(alpha: 0.2),
|
||||
borderColor:
|
||||
tender.status == 'Won'
|
||||
? AppColors.green10
|
||||
: tender.status == 'Completed'
|
||||
: tender.status == 'approved'
|
||||
? AppColors.grey30
|
||||
: AppColors.red0,
|
||||
statusIcon:
|
||||
tender.status == 'Won'
|
||||
? AssetsManager.tickCircle
|
||||
: tender.status == 'Completed'
|
||||
: tender.status == 'approved'
|
||||
? null
|
||||
: AssetsManager.closeCircle,
|
||||
statusCardColor:
|
||||
tender.status == 'Won'
|
||||
? AppColors.green20
|
||||
: tender.status == 'Completed'
|
||||
: tender.status == 'approved'
|
||||
? AppColors.green20
|
||||
: AppColors.red0,
|
||||
statusTextColor:
|
||||
tender.status == 'Won'
|
||||
? AppColors.green30
|
||||
: tender.status == 'Completed'
|
||||
: tender.status == 'approved'
|
||||
? AppColors.green30
|
||||
: AppColors.red10,
|
||||
);
|
||||
|
||||
+32
-8
@@ -37,10 +37,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
|
||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.13.0"
|
||||
version: "2.12.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -169,6 +169,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
country_flags:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: country_flags
|
||||
sha256: "78a7bf8aabd7ae1a90087f0c517471ac9ebfe07addc652692f58da0f0f833196"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.0"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -221,10 +229,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
version: "1.3.2"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -416,6 +424,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
jovial_misc:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: jovial_misc
|
||||
sha256: "4301011027d87b8b919cb862db84071a34448eadbb32cc8d40fe505424dfe69a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.2"
|
||||
jovial_svg:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: jovial_svg
|
||||
sha256: "6791b1435547bdc0793081a166d41a8a313ebc61e4e5136fb7a3218781fb9e50"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.27"
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -444,10 +468,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.9"
|
||||
version: "10.0.8"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -849,10 +873,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.0.0"
|
||||
version: "14.3.1"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
Reference in New Issue
Block a user