feat(blogPost): add recipes

This commit is contained in:
mso7nueh
2024-07-31 17:41:38 +03:00
parent 2f1d6425dc
commit 264b10bd0d
19 changed files with 2531 additions and 512 deletions

View File

@@ -0,0 +1,18 @@
import 'package:eatvio_app/features/feed/presentation/bloc/recipes_cubit/recipes_state.dart';
import 'package:eatvio_app/features/feed/repositories/feed_repository.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class RecipesCubit extends Cubit<RecipesState> {
final FeedRepository feedRepository;
RecipesCubit({required this.feedRepository}) : super(const RecipesState.loading());
loadRecipesList() async {
try {
final recipesList = await feedRepository.getRecipes();
emit(RecipesState.loaded(recipesList: recipesList));
} catch (e) {
emit(RecipesState.error(errorMessage: e.toString()));
}
}
}

View File

@@ -0,0 +1,19 @@
import 'package:eatvio_app/features/feed/models/recipes_model.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'recipes_state.freezed.dart';
@freezed
abstract class RecipesState with _$RecipesState {
const factory RecipesState() = _RecipesState;
const factory RecipesState.loading() = RecipesStateLoading;
const factory RecipesState.loaded({
required List<Recipes> recipesList,
}) = RecipesStateLoaded;
const factory RecipesState.error({
required String errorMessage,
}) = RecipesStateError;
}

View File

@@ -0,0 +1,619 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// 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 'recipes_state.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
/// @nodoc
mixin _$RecipesState {
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(List<Recipes> recipesList) loaded,
required TResult Function(String errorMessage) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(List<Recipes> recipesList)? loaded,
TResult? Function(String errorMessage)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(List<Recipes> recipesList)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_RecipesState value) $default, {
required TResult Function(RecipesStateLoading value) loading,
required TResult Function(RecipesStateLoaded value) loaded,
required TResult Function(RecipesStateError value) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_RecipesState value)? $default, {
TResult? Function(RecipesStateLoading value)? loading,
TResult? Function(RecipesStateLoaded value)? loaded,
TResult? Function(RecipesStateError value)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_RecipesState value)? $default, {
TResult Function(RecipesStateLoading value)? loading,
TResult Function(RecipesStateLoaded value)? loaded,
TResult Function(RecipesStateError value)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $RecipesStateCopyWith<$Res> {
factory $RecipesStateCopyWith(
RecipesState value, $Res Function(RecipesState) then) =
_$RecipesStateCopyWithImpl<$Res, RecipesState>;
}
/// @nodoc
class _$RecipesStateCopyWithImpl<$Res, $Val extends RecipesState>
implements $RecipesStateCopyWith<$Res> {
_$RecipesStateCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
}
/// @nodoc
abstract class _$$RecipesStateImplCopyWith<$Res> {
factory _$$RecipesStateImplCopyWith(
_$RecipesStateImpl value, $Res Function(_$RecipesStateImpl) then) =
__$$RecipesStateImplCopyWithImpl<$Res>;
}
/// @nodoc
class __$$RecipesStateImplCopyWithImpl<$Res>
extends _$RecipesStateCopyWithImpl<$Res, _$RecipesStateImpl>
implements _$$RecipesStateImplCopyWith<$Res> {
__$$RecipesStateImplCopyWithImpl(
_$RecipesStateImpl _value, $Res Function(_$RecipesStateImpl) _then)
: super(_value, _then);
}
/// @nodoc
class _$RecipesStateImpl implements _RecipesState {
const _$RecipesStateImpl();
@override
String toString() {
return 'RecipesState()';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is _$RecipesStateImpl);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(List<Recipes> recipesList) loaded,
required TResult Function(String errorMessage) error,
}) {
return $default();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(List<Recipes> recipesList)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return $default?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(List<Recipes> recipesList)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if ($default != null) {
return $default();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_RecipesState value) $default, {
required TResult Function(RecipesStateLoading value) loading,
required TResult Function(RecipesStateLoaded value) loaded,
required TResult Function(RecipesStateError value) error,
}) {
return $default(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_RecipesState value)? $default, {
TResult? Function(RecipesStateLoading value)? loading,
TResult? Function(RecipesStateLoaded value)? loaded,
TResult? Function(RecipesStateError value)? error,
}) {
return $default?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_RecipesState value)? $default, {
TResult Function(RecipesStateLoading value)? loading,
TResult Function(RecipesStateLoaded value)? loaded,
TResult Function(RecipesStateError value)? error,
required TResult orElse(),
}) {
if ($default != null) {
return $default(this);
}
return orElse();
}
}
abstract class _RecipesState implements RecipesState {
const factory _RecipesState() = _$RecipesStateImpl;
}
/// @nodoc
abstract class _$$RecipesStateLoadingImplCopyWith<$Res> {
factory _$$RecipesStateLoadingImplCopyWith(_$RecipesStateLoadingImpl value,
$Res Function(_$RecipesStateLoadingImpl) then) =
__$$RecipesStateLoadingImplCopyWithImpl<$Res>;
}
/// @nodoc
class __$$RecipesStateLoadingImplCopyWithImpl<$Res>
extends _$RecipesStateCopyWithImpl<$Res, _$RecipesStateLoadingImpl>
implements _$$RecipesStateLoadingImplCopyWith<$Res> {
__$$RecipesStateLoadingImplCopyWithImpl(_$RecipesStateLoadingImpl _value,
$Res Function(_$RecipesStateLoadingImpl) _then)
: super(_value, _then);
}
/// @nodoc
class _$RecipesStateLoadingImpl implements RecipesStateLoading {
const _$RecipesStateLoadingImpl();
@override
String toString() {
return 'RecipesState.loading()';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$RecipesStateLoadingImpl);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(List<Recipes> recipesList) loaded,
required TResult Function(String errorMessage) error,
}) {
return loading();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(List<Recipes> recipesList)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return loading?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(List<Recipes> recipesList)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (loading != null) {
return loading();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_RecipesState value) $default, {
required TResult Function(RecipesStateLoading value) loading,
required TResult Function(RecipesStateLoaded value) loaded,
required TResult Function(RecipesStateError value) error,
}) {
return loading(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_RecipesState value)? $default, {
TResult? Function(RecipesStateLoading value)? loading,
TResult? Function(RecipesStateLoaded value)? loaded,
TResult? Function(RecipesStateError value)? error,
}) {
return loading?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_RecipesState value)? $default, {
TResult Function(RecipesStateLoading value)? loading,
TResult Function(RecipesStateLoaded value)? loaded,
TResult Function(RecipesStateError value)? error,
required TResult orElse(),
}) {
if (loading != null) {
return loading(this);
}
return orElse();
}
}
abstract class RecipesStateLoading implements RecipesState {
const factory RecipesStateLoading() = _$RecipesStateLoadingImpl;
}
/// @nodoc
abstract class _$$RecipesStateLoadedImplCopyWith<$Res> {
factory _$$RecipesStateLoadedImplCopyWith(_$RecipesStateLoadedImpl value,
$Res Function(_$RecipesStateLoadedImpl) then) =
__$$RecipesStateLoadedImplCopyWithImpl<$Res>;
@useResult
$Res call({List<Recipes> recipesList});
}
/// @nodoc
class __$$RecipesStateLoadedImplCopyWithImpl<$Res>
extends _$RecipesStateCopyWithImpl<$Res, _$RecipesStateLoadedImpl>
implements _$$RecipesStateLoadedImplCopyWith<$Res> {
__$$RecipesStateLoadedImplCopyWithImpl(_$RecipesStateLoadedImpl _value,
$Res Function(_$RecipesStateLoadedImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? recipesList = null,
}) {
return _then(_$RecipesStateLoadedImpl(
recipesList: null == recipesList
? _value._recipesList
: recipesList // ignore: cast_nullable_to_non_nullable
as List<Recipes>,
));
}
}
/// @nodoc
class _$RecipesStateLoadedImpl implements RecipesStateLoaded {
const _$RecipesStateLoadedImpl({required final List<Recipes> recipesList})
: _recipesList = recipesList;
final List<Recipes> _recipesList;
@override
List<Recipes> get recipesList {
if (_recipesList is EqualUnmodifiableListView) return _recipesList;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_recipesList);
}
@override
String toString() {
return 'RecipesState.loaded(recipesList: $recipesList)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$RecipesStateLoadedImpl &&
const DeepCollectionEquality()
.equals(other._recipesList, _recipesList));
}
@override
int get hashCode => Object.hash(
runtimeType, const DeepCollectionEquality().hash(_recipesList));
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$RecipesStateLoadedImplCopyWith<_$RecipesStateLoadedImpl> get copyWith =>
__$$RecipesStateLoadedImplCopyWithImpl<_$RecipesStateLoadedImpl>(
this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(List<Recipes> recipesList) loaded,
required TResult Function(String errorMessage) error,
}) {
return loaded(recipesList);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(List<Recipes> recipesList)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return loaded?.call(recipesList);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(List<Recipes> recipesList)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (loaded != null) {
return loaded(recipesList);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_RecipesState value) $default, {
required TResult Function(RecipesStateLoading value) loading,
required TResult Function(RecipesStateLoaded value) loaded,
required TResult Function(RecipesStateError value) error,
}) {
return loaded(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_RecipesState value)? $default, {
TResult? Function(RecipesStateLoading value)? loading,
TResult? Function(RecipesStateLoaded value)? loaded,
TResult? Function(RecipesStateError value)? error,
}) {
return loaded?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_RecipesState value)? $default, {
TResult Function(RecipesStateLoading value)? loading,
TResult Function(RecipesStateLoaded value)? loaded,
TResult Function(RecipesStateError value)? error,
required TResult orElse(),
}) {
if (loaded != null) {
return loaded(this);
}
return orElse();
}
}
abstract class RecipesStateLoaded implements RecipesState {
const factory RecipesStateLoaded({required final List<Recipes> recipesList}) =
_$RecipesStateLoadedImpl;
List<Recipes> get recipesList;
@JsonKey(ignore: true)
_$$RecipesStateLoadedImplCopyWith<_$RecipesStateLoadedImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class _$$RecipesStateErrorImplCopyWith<$Res> {
factory _$$RecipesStateErrorImplCopyWith(_$RecipesStateErrorImpl value,
$Res Function(_$RecipesStateErrorImpl) then) =
__$$RecipesStateErrorImplCopyWithImpl<$Res>;
@useResult
$Res call({String errorMessage});
}
/// @nodoc
class __$$RecipesStateErrorImplCopyWithImpl<$Res>
extends _$RecipesStateCopyWithImpl<$Res, _$RecipesStateErrorImpl>
implements _$$RecipesStateErrorImplCopyWith<$Res> {
__$$RecipesStateErrorImplCopyWithImpl(_$RecipesStateErrorImpl _value,
$Res Function(_$RecipesStateErrorImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? errorMessage = null,
}) {
return _then(_$RecipesStateErrorImpl(
errorMessage: null == errorMessage
? _value.errorMessage
: errorMessage // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// @nodoc
class _$RecipesStateErrorImpl implements RecipesStateError {
const _$RecipesStateErrorImpl({required this.errorMessage});
@override
final String errorMessage;
@override
String toString() {
return 'RecipesState.error(errorMessage: $errorMessage)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$RecipesStateErrorImpl &&
(identical(other.errorMessage, errorMessage) ||
other.errorMessage == errorMessage));
}
@override
int get hashCode => Object.hash(runtimeType, errorMessage);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$RecipesStateErrorImplCopyWith<_$RecipesStateErrorImpl> get copyWith =>
__$$RecipesStateErrorImplCopyWithImpl<_$RecipesStateErrorImpl>(
this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(List<Recipes> recipesList) loaded,
required TResult Function(String errorMessage) error,
}) {
return error(errorMessage);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(List<Recipes> recipesList)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return error?.call(errorMessage);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(List<Recipes> recipesList)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(errorMessage);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_RecipesState value) $default, {
required TResult Function(RecipesStateLoading value) loading,
required TResult Function(RecipesStateLoaded value) loaded,
required TResult Function(RecipesStateError value) error,
}) {
return error(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_RecipesState value)? $default, {
TResult? Function(RecipesStateLoading value)? loading,
TResult? Function(RecipesStateLoaded value)? loaded,
TResult? Function(RecipesStateError value)? error,
}) {
return error?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_RecipesState value)? $default, {
TResult Function(RecipesStateLoading value)? loading,
TResult Function(RecipesStateLoaded value)? loaded,
TResult Function(RecipesStateError value)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(this);
}
return orElse();
}
}
abstract class RecipesStateError implements RecipesState {
const factory RecipesStateError({required final String errorMessage}) =
_$RecipesStateErrorImpl;
String get errorMessage;
@JsonKey(ignore: true)
_$$RecipesStateErrorImplCopyWith<_$RecipesStateErrorImpl> get copyWith =>
throw _privateConstructorUsedError;
}