feat: create product
This commit is contained in:
@@ -1,11 +1,7 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:enaklo_pos/data/datasources/product_remote_datasource.dart';
|
||||
import 'package:enaklo_pos/data/models/request/product_request_model.dart';
|
||||
import 'package:enaklo_pos/data/models/response/product_response_model.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
|
||||
part 'add_product_event.dart';
|
||||
part 'add_product_state.dart';
|
||||
@@ -18,21 +14,12 @@ class AddProductBloc extends Bloc<AddProductEvent, AddProductState> {
|
||||
) : super(const _Initial()) {
|
||||
on<_AddProduct>((event, emit) async {
|
||||
emit(const _Loading());
|
||||
final requestData = ProductRequestModel(
|
||||
name: event.product.name!,
|
||||
price: event.product.price!,
|
||||
stock: 0,
|
||||
categoryId: 0,
|
||||
isBestSeller: 0,
|
||||
image: event.image,
|
||||
);
|
||||
log("requestData: ${requestData.toString()}");
|
||||
final response = await datasource.addProduct(requestData);
|
||||
final response = await datasource.addProduct(event.product);
|
||||
// products.add(newProduct);
|
||||
response.fold(
|
||||
(l) => emit(_Error(l)),
|
||||
(r) {
|
||||
emit(_Success('Add Product Success'));
|
||||
emit(_Success('Produk berhasil ditambahkan'));
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
@@ -19,19 +19,19 @@ mixin _$AddProductEvent {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() started,
|
||||
required TResult Function(Product product, XFile image) addProduct,
|
||||
required TResult Function(ProductRequestModel product) addProduct,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? started,
|
||||
TResult? Function(Product product, XFile image)? addProduct,
|
||||
TResult? Function(ProductRequestModel product)? addProduct,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? started,
|
||||
TResult Function(Product product, XFile image)? addProduct,
|
||||
TResult Function(ProductRequestModel product)? addProduct,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@@ -119,7 +119,7 @@ class _$StartedImpl implements _Started {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() started,
|
||||
required TResult Function(Product product, XFile image) addProduct,
|
||||
required TResult Function(ProductRequestModel product) addProduct,
|
||||
}) {
|
||||
return started();
|
||||
}
|
||||
@@ -128,7 +128,7 @@ class _$StartedImpl implements _Started {
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? started,
|
||||
TResult? Function(Product product, XFile image)? addProduct,
|
||||
TResult? Function(ProductRequestModel product)? addProduct,
|
||||
}) {
|
||||
return started?.call();
|
||||
}
|
||||
@@ -137,7 +137,7 @@ class _$StartedImpl implements _Started {
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? started,
|
||||
TResult Function(Product product, XFile image)? addProduct,
|
||||
TResult Function(ProductRequestModel product)? addProduct,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (started != null) {
|
||||
@@ -188,7 +188,7 @@ abstract class _$$AddProductImplCopyWith<$Res> {
|
||||
_$AddProductImpl value, $Res Function(_$AddProductImpl) then) =
|
||||
__$$AddProductImplCopyWithImpl<$Res>;
|
||||
@useResult
|
||||
$Res call({Product product, XFile image});
|
||||
$Res call({ProductRequestModel product});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -205,17 +205,12 @@ class __$$AddProductImplCopyWithImpl<$Res>
|
||||
@override
|
||||
$Res call({
|
||||
Object? product = null,
|
||||
Object? image = null,
|
||||
}) {
|
||||
return _then(_$AddProductImpl(
|
||||
null == product
|
||||
? _value.product
|
||||
: product // ignore: cast_nullable_to_non_nullable
|
||||
as Product,
|
||||
null == image
|
||||
? _value.image
|
||||
: image // ignore: cast_nullable_to_non_nullable
|
||||
as XFile,
|
||||
as ProductRequestModel,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -223,16 +218,14 @@ class __$$AddProductImplCopyWithImpl<$Res>
|
||||
/// @nodoc
|
||||
|
||||
class _$AddProductImpl implements _AddProduct {
|
||||
const _$AddProductImpl(this.product, this.image);
|
||||
const _$AddProductImpl(this.product);
|
||||
|
||||
@override
|
||||
final Product product;
|
||||
@override
|
||||
final XFile image;
|
||||
final ProductRequestModel product;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AddProductEvent.addProduct(product: $product, image: $image)';
|
||||
return 'AddProductEvent.addProduct(product: $product)';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -240,12 +233,11 @@ class _$AddProductImpl implements _AddProduct {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$AddProductImpl &&
|
||||
(identical(other.product, product) || other.product == product) &&
|
||||
(identical(other.image, image) || other.image == image));
|
||||
(identical(other.product, product) || other.product == product));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, product, image);
|
||||
int get hashCode => Object.hash(runtimeType, product);
|
||||
|
||||
/// Create a copy of AddProductEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@@ -259,29 +251,29 @@ class _$AddProductImpl implements _AddProduct {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() started,
|
||||
required TResult Function(Product product, XFile image) addProduct,
|
||||
required TResult Function(ProductRequestModel product) addProduct,
|
||||
}) {
|
||||
return addProduct(product, image);
|
||||
return addProduct(product);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? started,
|
||||
TResult? Function(Product product, XFile image)? addProduct,
|
||||
TResult? Function(ProductRequestModel product)? addProduct,
|
||||
}) {
|
||||
return addProduct?.call(product, image);
|
||||
return addProduct?.call(product);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? started,
|
||||
TResult Function(Product product, XFile image)? addProduct,
|
||||
TResult Function(ProductRequestModel product)? addProduct,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (addProduct != null) {
|
||||
return addProduct(product, image);
|
||||
return addProduct(product);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
@@ -319,11 +311,10 @@ class _$AddProductImpl implements _AddProduct {
|
||||
}
|
||||
|
||||
abstract class _AddProduct implements AddProductEvent {
|
||||
const factory _AddProduct(final Product product, final XFile image) =
|
||||
const factory _AddProduct(final ProductRequestModel product) =
|
||||
_$AddProductImpl;
|
||||
|
||||
Product get product;
|
||||
XFile get image;
|
||||
ProductRequestModel get product;
|
||||
|
||||
/// Create a copy of AddProductEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
|
||||
@@ -3,6 +3,6 @@ part of 'add_product_bloc.dart';
|
||||
@freezed
|
||||
class AddProductEvent with _$AddProductEvent {
|
||||
const factory AddProductEvent.started() = _Started;
|
||||
const factory AddProductEvent.addProduct(Product product, XFile image) =
|
||||
const factory AddProductEvent.addProduct(ProductRequestModel product) =
|
||||
_AddProduct;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user