57 lines
1.5 KiB
Dart
Executable File
57 lines
1.5 KiB
Dart
Executable File
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:image_picker/image_picker.dart';
|
|
|
|
typedef BlockImgCallback = void Function(dynamic imgStr);
|
|
|
|
class SelectImageTool {
|
|
// 实例化ImagePicker
|
|
final ImagePicker _picker = ImagePicker();
|
|
ImageProvider? _imageProvider;
|
|
XFile? pickedFile;
|
|
XFile? cameraImages;
|
|
// 打开相机
|
|
Future<void> getCameraImage(BlockImgCallback callback) async {
|
|
try {
|
|
cameraImages = await _picker.pickImage(source: ImageSource.camera, maxWidth: 800);
|
|
if (cameraImages != null) {
|
|
// 获取图像地址
|
|
_imageProvider = FileImage(File(cameraImages!.path));
|
|
callback(_imageProvider);
|
|
} else {
|
|
_imageProvider = null;
|
|
}
|
|
|
|
} catch (e) {
|
|
if (e is MissingPluginException) {
|
|
// Toast.Show('当前平台不支持!');
|
|
} else {
|
|
// Toast.Show('暂未开放相机权限');
|
|
}
|
|
}
|
|
}
|
|
|
|
// 打开相册
|
|
Future<void> getImage(BlockImgCallback callback) async {
|
|
try {
|
|
pickedFile = await _picker.pickImage(source: ImageSource.gallery, maxWidth: 800);
|
|
if (pickedFile != null) {
|
|
// 获取图像地址
|
|
_imageProvider = FileImage(File(pickedFile!.path));
|
|
callback(_imageProvider);
|
|
} else {
|
|
_imageProvider = null;
|
|
}
|
|
} catch (e) {
|
|
if (e is MissingPluginException) {
|
|
// Toast.Show('当前平台不支持!');
|
|
} else {
|
|
// Toast.Show('暂未开放相册权限');
|
|
}
|
|
}
|
|
}
|
|
}
|