Merge pull request #8 from Iconica-Development/v1.0.2

feat: added ImagePickerService interface
This commit is contained in:
Gorter-dev 2022-10-21 16:24:11 +02:00 committed by GitHub
commit e50c1e9d29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 48 deletions

View file

@ -20,3 +20,7 @@
## 1.0.0 - September 26th 2022
- Icons can be changed by Widgets instead of IconData.
## 1.0.2 - Oktober 21st 2022
- ImagePickerService can be correctly injected into the widget.

View file

@ -68,7 +68,7 @@ packages:
path: ".."
relative: true
source: path
version: "1.0.0"
version: "1.0.3"
flutter_lints:
dependency: "direct dev"
description:

View file

@ -1,4 +1,5 @@
library flutter_image_picker;
export 'src/services/image_picker_service.dart';
export 'src/models/image_picker_theme.dart';
export 'src/ui/image_picker.dart';

View file

@ -4,14 +4,23 @@ import 'package:image_picker/image_picker.dart';
/// The Image Picker Service class is the functionality of the Image Picker package which uses the Image Picker package to choose an image.
/// If you have your own implementation of the Image Picker you can add it to the constructor when creating the class.
class ImagePickerService {
ImagePickerService({this.imagePicker});
abstract class ImagePickerService {
/// [pickImage] is the function that picks the image and returns it as a [Uint8List].
/// The function requires [source], an [ImageSource]
Future<Uint8List?> pickImage(ImageSource source);
}
/// The ImagePickerServiceDefault is the default implementation of the ImagePickerService.
/// It uses the Image Picker package to pick an image and returns it as a [Uint8List].
class ImagePickerServiceDefault implements ImagePickerService {
ImagePickerServiceDefault({this.imagePicker});
/// It's possible to have your own implementation for the Image Picker if you don't want to use the Image Picker Package.
ImagePicker? imagePicker;
/// [pickImage] is the function that picks the image and returns it as a [Uint8List].
/// The function requires [source], an [ImageSource] that's the method of how the image needs to be picked, for example gallery or camera.
@override
Future<Uint8List?> pickImage(ImageSource source) async {
var image =
await (await (imagePicker ?? ImagePicker()).pickImage(source: source))

View file

@ -9,12 +9,12 @@ import '../models/image_picker_theme.dart';
/// The second one is your own implementation of the ImagePickerService. Which can be used in testing for example.
/// The third one is a custom Button widget.
class ImagePicker extends StatelessWidget {
const ImagePicker(
{Key? key,
this.imagePickerTheme = const ImagePickerTheme(),
this.imagePickerService,
this.customButton})
: super(key: key);
const ImagePicker({
this.imagePickerTheme = const ImagePickerTheme(),
this.imagePickerService,
this.customButton,
super.key,
});
/// ImagePickerTheme can be used to change the UI of the Image Picker Widget to change the text/icons to your liking.
final ImagePickerTheme imagePickerTheme;
@ -119,8 +119,9 @@ class ImagePicker extends StatelessWidget {
key: Key(bottomText),
onTap: () async {
final navigator = Navigator.of(context);
var image = await (imagePickerService ?? ImagePickerService())
.pickImage(imageSource);
var image =
await (imagePickerService ?? ImagePickerServiceDefault())
.pickImage(imageSource);
navigator.pop(image);
},
child: customIcon ??

View file

@ -1,7 +1,7 @@
name: flutter_image_picker
description: A new Flutter package project.
version: 1.0.0
homepage: https://github.com/Iconica-Development/flutter_image_picker
description: A Flutter Image Picking package.
version: 1.0.3
repository: https://github.com/Iconica-Development/flutter_image_picker
environment:
sdk: ">=2.17.6 <3.0.0"
@ -18,38 +18,4 @@ dev_dependencies:
flutter_lints: ^2.0.0
mocktail: ^0.3.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter packages.
flutter:
# To add assets to your package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
#
# For details regarding assets in packages, see
# https://flutter.dev/assets-and-images/#from-packages
#
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware
# To add custom fonts to your package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts in packages, see
# https://flutter.dev/custom-fonts/#from-packages