import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; /// Files utilities /// /// @author Pierre HUBERT enum _ChooseImageSource { GALLERY, CAMERA } /// Ask the user to choose an image, either from the gallery or using the camera /// /// Returns null in case of failure Future pickImage(BuildContext context) async { /// First, we ask the user to choose between image picker and camera final result = await showDialog<_ChooseImageSource>( context: context, builder: (c) { return AlertDialog( title: Text(tr("Choose an image")), actions: [ //Gallery FlatButton( onPressed: () => Navigator.pop(context, _ChooseImageSource.GALLERY), child: Text( tr("Image gallery").toUpperCase(), ), ), // Camera FlatButton( onPressed: () => Navigator.pop(context, _ChooseImageSource.CAMERA), child: Text( tr("Camera").toUpperCase(), ), ), ], ); }, ); if (result == null) return null; return await ImagePicker().getImage( source: result == _ChooseImageSource.CAMERA ? ImageSource.camera : ImageSource.gallery); } /// Check if a mime type maps to an image or not bool isImage(String mimeType) => mimeType.startsWith("image/"); /// Check if a mime type maps to a video or not bool isVideo(String mimeType) => mimeType.startsWith("video/mp4"); /// Check if a mime type maps to an audio file or not bool isAudio(String mimeType) => mimeType.startsWith("audio/mpeg");