more parameters and improvements to the modal

This commit is contained in:
commitimpush 2022-08-31 14:42:17 +02:00
parent 1f2af6b0b2
commit fe9ca37185
3 changed files with 76 additions and 34 deletions

View file

@ -6,13 +6,27 @@ import 'src/models/image_picker_settings.dart';
class ImagePicker {
Future<Uint8List?> showPickImageDialog(BuildContext context,
{String title = ImagePickerSettings.title,
String makePhotoText = ImagePickerSettings.makePhotoText,
IconData makePhotoIcon = ImagePickerSettings.makePhotoIcon,
String selectImageText = ImagePickerSettings.selectImageText,
IconData selectImageIcon = ImagePickerSettings.selectImageIcon,
String closeButtonText = ImagePickerSettings.closeButtonText}) {
return ImagePickerUI().pickImageDialog(context, title, makePhotoText,
makePhotoIcon, selectImageText, selectImageIcon, closeButtonText);
{String title = ImagePickerDefaultParameters.title,
double titleTextSize = ImagePickerDefaultParameters.titleTextSize,
double iconSize = ImagePickerDefaultParameters.iconSize,
double iconTextSize = ImagePickerDefaultParameters.iconTextSize,
double spaceBetweenIcons = ImagePickerDefaultParameters.spaceBetweenIcons,
String makePhotoText = ImagePickerDefaultParameters.makePhotoText,
IconData makePhotoIcon = ImagePickerDefaultParameters.makePhotoIcon,
String selectImageText = ImagePickerDefaultParameters.selectImageText,
IconData selectImageIcon = ImagePickerDefaultParameters.selectImageIcon,
String closeButtonText = ImagePickerDefaultParameters.closeButtonText}) {
return ImagePickerUI().pickImageDialog(
context,
title,
titleTextSize,
iconSize,
iconTextSize,
spaceBetweenIcons,
makePhotoText,
makePhotoIcon,
selectImageText,
selectImageIcon,
closeButtonText);
}
}

View file

@ -1,7 +1,11 @@
import 'package:flutter/material.dart';
class ImagePickerSettings {
class ImagePickerDefaultParameters {
static const String title = "Upload Image";
static const double titleTextSize = 20;
static const double iconSize = 125;
static const double iconTextSize = 15;
static const double spaceBetweenIcons = 30;
static const String makePhotoText = "Take a Picture";
static const IconData makePhotoIcon = Icons.camera_alt_rounded;
static const String selectImageText = "Select File";

View file

@ -6,11 +6,14 @@ import 'package:image_picker/image_picker.dart';
class ImagePickerUI {
final ImagePickerService _imagePickerService = ImagePickerService();
final double iconSize = 150;
Future<Uint8List?> pickImageDialog(
BuildContext context,
String title,
double titleTextSize,
double iconSize,
double iconTextSize,
double spaceBetweenIcons,
String makePhotoText,
IconData makePhotoIcon,
String selectImageText,
@ -19,33 +22,51 @@ class ImagePickerUI {
return await showModalBottomSheet<Uint8List?>(
context: context,
builder: (BuildContext context) {
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
const SizedBox(
height: 20,
),
Text(
title,
textScaleFactor: 2,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
generateColumn(context, selectImageIcon, ImageSource.gallery,
selectImageText),
generateColumn(
context, makePhotoIcon, ImageSource.camera, makePhotoText),
],
),
ElevatedButton(
onPressed: () => Navigator.of(context).pop(),
child: Text(closeButtonText)),
]);
return Wrap(
children: <Widget>[
ListTile(
title: Text(
title,
style: TextStyle(
fontSize: titleTextSize,
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
generateColumn(context, selectImageIcon, iconSize, iconTextSize,
ImageSource.gallery, selectImageText),
SizedBox(
width: spaceBetweenIcons,
),
generateColumn(context, makePhotoIcon, iconSize, iconTextSize,
ImageSource.camera, makePhotoText),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 300,
height: 40,
child: ElevatedButton(
onPressed: () => Navigator.of(context).pop(),
child: Text(closeButtonText)),
)
],
),
const SizedBox(
height: 60,
),
],
);
},
);
}
Column generateColumn(BuildContext context, IconData icon,
ImageSource imageSource, String bottomText) {
Column generateColumn(BuildContext context, IconData icon, double iconSize,
double iconTextSize, ImageSource imageSource, String bottomText) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
@ -54,7 +75,10 @@ class ImagePickerUI {
iconSize: iconSize,
onPressed: () => _imagePickerService.pickImage(imageSource, context),
),
Text(bottomText),
Text(
bottomText,
style: TextStyle(fontSize: iconTextSize),
),
const SizedBox(
height: 20,
),