@ -1,8 +1,11 @@
import ' dart:convert ' ;
import ' dart:io ' ;
import ' package:car_provider_app/view_models/items_view_model.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:mc_common_app/classes/consts.dart ' ;
import ' package:mc_common_app/extensions/int_extensions.dart ' ;
import ' package:mc_common_app/generated/locale_keys.g.dart ' ;
import ' package:mc_common_app/models/general_models/generic_resp_model.dart ' ;
import ' package:mc_common_app/models/services_models/item_model.dart ' ;
import ' package:mc_common_app/theme/colors.dart ' ;
@ -10,6 +13,9 @@ import 'package:mc_common_app/utils/app_permission_handler.dart';
import ' package:mc_common_app/utils/date_helper.dart ' ;
import ' package:mc_common_app/utils/navigator.dart ' ;
import ' package:mc_common_app/utils/utils.dart ' ;
import ' package:mc_common_app/view_models/ad_view_model.dart ' ;
import ' package:mc_common_app/views/advertisement/ad_creation_steps/ad_creation_steps_containers.dart ' ;
import ' package:mc_common_app/views/advertisement/components/picked_images_container_widget.dart ' ;
import ' package:mc_common_app/widgets/button/show_fill_button.dart ' ;
import ' package:mc_common_app/widgets/checkbox_with_title_desc.dart ' ;
import ' package:mc_common_app/widgets/common_widgets/app_bar.dart ' ;
@ -17,6 +23,7 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import ' package:mc_common_app/widgets/txt_field.dart ' ;
import ' package:permission_handler/permission_handler.dart ' ;
import ' package:provider/provider.dart ' ;
import ' package:easy_localization/easy_localization.dart ' ;
class CreateItemPage extends StatefulWidget {
const CreateItemPage ( { Key ? key } ) : super ( key: key ) ;
@ -31,6 +38,7 @@ class _CreateItemPageState extends State<CreateItemPage> {
bool isWorkshopAppointmentAvailable = false ;
bool isHomeAppointmentAvailable = false ;
bool isDefaultValudDone = false ;
File ? file ;
ItemsVM ? model ;
ItemData ? itemData ;
@ -113,59 +121,28 @@ class _CreateItemPageState extends State<CreateItemPage> {
} ,
) ,
12. height ,
if ( itemImage ! = null & & itemImage ! . isNotEmpty )
Column (
children: [
Image . memory (
base64Decode ( itemImage ? ? " " ) ,
) . toContainer (
isEnabledBorder: true ,
paddingAll: 12 ,
) ,
12. height ,
] ,
) ,
InkWell (
onTap: ( ) async {
bool isPermissionsAvailable = await requestPermissionGranted ( context , Permission . storage ) ;
if ( isPermissionsAvailable & & model ! = null ) {
itemImage = await model ! . selectFile ( context ) ? ? " " ;
if ( file ! = null ) . . . [
PickedFilesContainer (
pickedFiles: pickedImages ( ) ,
onCrossPressedPrimary: onCrossPress ,
isPdf: false ,
isReview: false ,
isFromNetwork: false ,
onAddFilePressed: ( ) async {
file = await model ! . pickSingleFile ( context ) ;
setState ( ( ) { } ) ;
}
} ,
child: Container (
width: double . infinity ,
height: 45 ,
decoration: BoxDecoration (
color: Colors . transparent ,
border: Border . all ( color: MyColors . greyACColor , width: 2 ) ,
borderRadius: const BorderRadius . all ( Radius . circular ( 0 ) ) ,
) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . center ,
children: [
const Icon (
Icons . attach_file ,
size: 18 ,
color: MyColors . darkPrimaryColor ,
) ,
8. width ,
const Text (
" Attach Item Image " ,
style: TextStyle (
color: MyColors . darkPrimaryColor ,
) ,
) ,
const Icon (
Icons . attach_file ,
size: 18 ,
color: Colors . transparent ,
) ,
] ,
) ,
} ,
) ,
) ,
] else . . . [
10. height ,
DottedRectContainer (
onTap: ( ) async {
file = await model ! . pickSingleFile ( context ) ;
setState ( ( ) { } ) ;
} ,
text: LocaleKeys . attachImage . tr ( ) ,
icon: MyAssets . attachmentIcon . buildSvg ( ) )
] ,
20. height ,
CheckBoxWithTitleDescription (
isSelected: isAppointmentAvailable ,
@ -212,12 +189,13 @@ class _CreateItemPageState extends State<CreateItemPage> {
maxWidth: double . infinity ,
onPressed: ( ) async {
if ( validation ( ) ) {
var attachedFile = await Utils . convertFileToBase64 ( file ! ) ;
if ( ! ( itemData ? . isUpdateOrSelected ? ? false ) ) {
Map map = {
" name " : name ,
" price " : price ,
" description " : description ,
" itemImage " : itemImag e ? ? " " ,
" itemImage " : attachedFil e ? ? " " ,
" companyID " : 1 ,
" manufactureDate " : year ,
" serviceProviderServiceID " : itemData ! . serviceProviderServiceId ,
@ -240,7 +218,7 @@ class _CreateItemPageState extends State<CreateItemPage> {
" name " : name ,
" price " : price ,
" description " : description ,
" itemImage " : itemImag e ? ? " " ,
" itemImage " : attachedFil e ? ? " " ,
" companyID " : 1 ,
" manufactureDate " : year ,
" serviceProviderServiceID " : itemData ! . serviceProviderServiceId ,
@ -284,4 +262,17 @@ class _CreateItemPageState extends State<CreateItemPage> {
}
return valid ;
}
void onCrossPress ( String item ) {
file = null ;
setState ( ( ) { } ) ;
}
List < ImageModel > pickedImages ( ) {
List < ImageModel > pickedImage = [ ] ;
if ( file ! = null ) {
pickedImage . add ( ImageModel ( isFromNetwork: false , id: 1 , filePath: file ! . path ) ) ;
}
return pickedImage ;
}
}