From fe9ca37185509d16c4d5138936feb8520d598b03 Mon Sep 17 00:00:00 2001 From: commitimpush Date: Wed, 31 Aug 2022 14:42:17 +0200 Subject: [PATCH] more parameters and improvements to the modal --- lib/image_picker.dart | 30 ++++++--- lib/src/models/image_picker_settings.dart | 6 +- lib/src/screens/image_picker_ui.dart | 74 +++++++++++++++-------- 3 files changed, 76 insertions(+), 34 deletions(-) diff --git a/lib/image_picker.dart b/lib/image_picker.dart index b891e13..d4aff79 100644 --- a/lib/image_picker.dart +++ b/lib/image_picker.dart @@ -6,13 +6,27 @@ import 'src/models/image_picker_settings.dart'; class ImagePicker { Future 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); } } diff --git a/lib/src/models/image_picker_settings.dart b/lib/src/models/image_picker_settings.dart index 9764afa..ef39cd9 100644 --- a/lib/src/models/image_picker_settings.dart +++ b/lib/src/models/image_picker_settings.dart @@ -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"; diff --git a/lib/src/screens/image_picker_ui.dart b/lib/src/screens/image_picker_ui.dart index 43a4ffb..5dc0bf5 100644 --- a/lib/src/screens/image_picker_ui.dart +++ b/lib/src/screens/image_picker_ui.dart @@ -6,11 +6,14 @@ import 'package:image_picker/image_picker.dart'; class ImagePickerUI { final ImagePickerService _imagePickerService = ImagePickerService(); - final double iconSize = 150; Future 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( context: context, builder: (BuildContext context) { - return Column(mainAxisSize: MainAxisSize.min, children: [ - 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: [ + 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: [ @@ -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, ),