mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-29 08:16:28 +00:00
57 lines
1.7 KiB
Dart
57 lines
1.7 KiB
Dart
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<PickedFile> 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: <Widget>[
|
|
//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");
|