@@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart';
55import 'package:flutter/material.dart' ;
66import 'package:image_picker/image_picker.dart' ;
77
8- class ImageSourceBottomSheet extends StatelessWidget {
8+ class ImageSourceBottomSheet extends StatefulWidget {
99 /// Optional maximum height of image
1010 final double maxHeight;
1111
@@ -39,8 +39,6 @@ class ImageSourceBottomSheet extends StatelessWidget {
3939 final Widget cameraLabel;
4040 final Widget galleryLabel;
4141 final EdgeInsets bottomSheetPadding;
42-
43- bool _isPickingImage = false ;
4442
4543 ImageSourceBottomSheet ({
4644 Key key,
@@ -58,30 +56,37 @@ class ImageSourceBottomSheet extends StatelessWidget {
5856 }) : assert (null != onImage || null != onImageSelected),
5957 super (key: key);
6058
59+ @override
60+ _ImageSourceBottomSheetState createState () => _ImageSourceBottomSheetState ();
61+ }
62+
63+ class _ImageSourceBottomSheetState extends State <ImageSourceBottomSheet > {
64+ bool _isPickingImage = false ;
65+
6166 Future <void > _onPickImage (ImageSource source) async {
62- if (_isPickingImage) return ;
67+ if (_isPickingImage) return ;
6368 _isPickingImage = true ;
6469 final imagePicker = ImagePicker ();
6570 final pickedFile = await imagePicker.getImage (
6671 source: source,
67- maxHeight: maxHeight,
68- maxWidth: maxWidth,
69- imageQuality: imageQuality,
70- preferredCameraDevice: preferredCameraDevice,
72+ maxHeight: widget. maxHeight,
73+ maxWidth: widget. maxWidth,
74+ imageQuality: widget. imageQuality,
75+ preferredCameraDevice: widget. preferredCameraDevice,
7176 );
7277 _isPickingImage = false ;
7378 if (null != pickedFile) {
7479 if (kIsWeb) {
75- if (null != onImage) {
76- onImage (await pickedFile.readAsBytes ());
80+ if (null != widget. onImage) {
81+ widget. onImage (await pickedFile.readAsBytes ());
7782 }
7883 } else {
79- if (null != onImageSelected) {
84+ if (null != widget. onImageSelected) {
8085 // Warning: this will not work on the web platform because pickedFile
8186 // will instead point to a network resource.
8287 final imageFile = File (pickedFile.path);
8388 assert (null != imageFile);
84- onImageSelected (imageFile);
89+ widget. onImageSelected (imageFile);
8590 }
8691 }
8792 }
@@ -92,21 +97,22 @@ class ImageSourceBottomSheet extends StatelessWidget {
9297 return WillPopScope (
9398 onWillPop: () async => ! _isPickingImage,
9499 child: Container (
95- padding: bottomSheetPadding,
100+ padding: widget. bottomSheetPadding,
96101 child: Wrap (
97102 children: < Widget > [
98103 ListTile (
99- leading: cameraIcon,
100- title: cameraLabel,
104+ leading: widget. cameraIcon,
105+ title: widget. cameraLabel,
101106 onTap: () => _onPickImage (ImageSource .camera),
102107 ),
103108 ListTile (
104- leading: galleryIcon,
105- title: galleryLabel,
109+ leading: widget. galleryIcon,
110+ title: widget. galleryLabel,
106111 onTap: () => _onPickImage (ImageSource .gallery),
107112 )
108113 ],
109114 ),
115+ ),
110116 );
111117 }
112118}
0 commit comments