diff --git a/CHANGELOG.md b/CHANGELOG.md index fcd249f..d193019 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,3 +45,6 @@ * Added title options to theme. * updated iconica_analysis dependency. * Updated default theme. + +# 4.1.0 +* Added support for handling errors when calling `pickImage`. diff --git a/example/lib/main.dart b/example/lib/main.dart index c2d3e37..90f6f73 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -116,7 +116,13 @@ class ImagePickerExampleHomePageState Uint8List? imageInBytes = await showModalBottomSheet( context: context, backgroundColor: Colors.white, - builder: (BuildContext context) => const ImagePicker()); + builder: (BuildContext context) => ImagePicker( + onError: (error) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(error.message ?? "An error occurred")), + ); + }, + )); if (imageInBytes != null) { if (!listEquals(uploadedImage, imageInBytes)) { setState(() { diff --git a/lib/src/ui/image_picker.dart b/lib/src/ui/image_picker.dart index 1b3d8e4..63a8a9e 100644 --- a/lib/src/ui/image_picker.dart +++ b/lib/src/ui/image_picker.dart @@ -3,6 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause import "package:flutter/material.dart"; +import "package:flutter/services.dart"; import "package:flutter_image_picker/flutter_image_picker.dart"; import "package:image_picker/image_picker.dart"; @@ -21,6 +22,7 @@ class ImagePicker extends StatelessWidget { this.theme = const ImagePickerTheme(), this.config = const ImagePickerConfig(), this.service, + this.onError, super.key, }); @@ -36,6 +38,8 @@ class ImagePicker extends StatelessWidget { /// add more features. If null the current implementation will be used. final ImagePickerService? service; + final Function(PlatformException error)? onError; + @override Widget build(BuildContext context) => SingleChildScrollView( child: Column( @@ -58,6 +62,7 @@ class ImagePicker extends StatelessWidget { Icons.image, ImageSource.gallery, theme.selectImageText, + onError, ), if (config.cameraOption ?? true) ...[ SizedBox( @@ -70,6 +75,7 @@ class ImagePicker extends StatelessWidget { Icons.camera_alt_rounded, ImageSource.camera, theme.makePhotoText, + onError, ), ], ], @@ -125,6 +131,7 @@ class ImagePicker extends StatelessWidget { IconData icon, ImageSource imageSource, String bottomText, + Function(PlatformException error)? onError, ) => Column( mainAxisSize: MainAxisSize.min, @@ -133,8 +140,14 @@ class ImagePicker extends StatelessWidget { key: Key(bottomText), onTap: () async { var navigator = Navigator.of(context); - var image = await (service ?? ImagePickerServiceDefault()) - .pickImage(imageSource, config: config); + Uint8List? image; + try { + image = await (service ?? ImagePickerServiceDefault()) + .pickImage(imageSource, config: config); + } on PlatformException catch (e) { + debugPrint("image_picker_error: $e"); + onError?.call(e); + } navigator.pop(image); }, child: customIcon ?? diff --git a/pubspec.yaml b/pubspec.yaml index 5a9b8f6..50fb559 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_image_picker description: A Flutter Image Picking package. -version: 4.0.0 +version: 4.1.0 repository: https://github.com/Iconica-Development/flutter_image_picker publish_to: https://forgejo.internal.iconica.nl/api/packages/internal/pub @@ -12,7 +12,7 @@ environment: dependencies: flutter: sdk: flutter - image_picker: ^1.0.7 + image_picker: ^1.1.2 dev_dependencies: flutter_test: @@ -22,5 +22,3 @@ dev_dependencies: git: url: https://github.com/Iconica-Development/flutter_iconica_analysis ref: 7.0.0 - -flutter: