Merge branch 'main' into splash
This commit is contained in:
158
lib/Utils/Common/ImageUpload.dart
Normal file
158
lib/Utils/Common/ImageUpload.dart
Normal file
@@ -0,0 +1,158 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:traderscircuit/Utils/Common/sized_box.dart';
|
||||
import 'package:traderscircuit/controller/profile_image_controller.dart';
|
||||
|
||||
import 'ImagePicker.dart';
|
||||
import 'SingleFilePicker.dart';
|
||||
|
||||
class ImageUploadBottomSheet {
|
||||
final ProfileImageController editProfileImage =
|
||||
Get.put(ProfileImageController());
|
||||
showModal(
|
||||
BuildContext context,
|
||||
bool showFile,
|
||||
Function(String) onImagePicked,
|
||||
) {
|
||||
return showModalBottomSheet(
|
||||
isScrollControlled: true,
|
||||
context: context,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(26.r),
|
||||
topRight: Radius.circular(26.r),
|
||||
),
|
||||
),
|
||||
builder: (context) {
|
||||
return Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 36.w, vertical: 26.h),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.of(context).viewInsets.bottom),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(
|
||||
(showFile) ? 'Select Image/File' : 'Select Image',
|
||||
style: TextStyle(
|
||||
color: const Color(0xff444444),
|
||||
fontSize: 22.sp,
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
// editProfileImage.getImage(ImageSource.camera);
|
||||
var result = await ImagePickerMethod()
|
||||
.getImage(ImageSource.camera);
|
||||
onImagePicked(result);
|
||||
|
||||
Get.back();
|
||||
},
|
||||
child: Column(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
child: Icon(
|
||||
Icons.camera_alt_outlined,
|
||||
size: 30.sp,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 6.h,
|
||||
),
|
||||
Text(
|
||||
'Camera',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxWidth(36.w),
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
var result = await ImagePickerMethod()
|
||||
.getImage(ImageSource.gallery);
|
||||
onImagePicked(result);
|
||||
Get.back();
|
||||
},
|
||||
child: Column(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
child: Icon(
|
||||
Icons.image_outlined,
|
||||
size: 30.sp,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 6.h,
|
||||
),
|
||||
Text(
|
||||
'Gallery',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Visibility(visible: showFile, child: sizedBoxWidth(36.w)),
|
||||
Visibility(
|
||||
visible: showFile,
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
var result =
|
||||
await SingleFilePickerMethod().pickFile();
|
||||
onImagePicked(result?.path ?? "");
|
||||
Get.back();
|
||||
},
|
||||
child: Column(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
child: Icon(
|
||||
Icons.file_copy_outlined,
|
||||
size: 30.sp,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 6.h,
|
||||
),
|
||||
Text(
|
||||
'File',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
fontFamily: 'Poppins'),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
23
lib/Utils/Common/SingleFilePicker.dart
Normal file
23
lib/Utils/Common/SingleFilePicker.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
|
||||
class SingleFilePickerMethod {
|
||||
Future<File?> pickFile() async {
|
||||
FilePickerResult? result = await FilePicker.platform.pickFiles(
|
||||
type: FileType.custom,
|
||||
allowedExtensions: [
|
||||
'jpg',
|
||||
'jpeg',
|
||||
'png',
|
||||
'pdf'
|
||||
], // Define the allowed file types
|
||||
);
|
||||
|
||||
if (result != null) {
|
||||
return File(result.files.single.path!);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user