Flutter资源选择插件easy_asset_picker的使用
Flutter资源选择插件easy_asset_picker的使用
特性
- ✅ 简单的图片选择器
- ✅ 权限处理
- ✅ 可自定义的用户界面
- ❌ 不支持视频
- ❌ 不支持多选
- ❌ 不支持自定义图片压缩
使用方法
showAssetPicker(
context,
config: AssetPickerConfig(
maxSelection: 9,
),
)
完整示例代码
import 'package:easy_asset_picker/picker/config/config.dart';
import 'package:easy_asset_picker/picker/widgets/asset_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个widget是你的应用的根组件。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// 这是你的应用的主题。
//
// 尝试一下:运行你的应用。你会看到应用有一个紫色的工具栏。然后,在不退出应用的情况下,
// 将颜色方案中的seedColor改为Colors.green并进行热重载(保存更改或在支持热重载的IDE中按下“热重载”按钮,或者在命令行中使用“r”)。
//
// 注意到计数器没有重置回零;这是因为应用的状态在重载期间没有丢失。要重置状态,请使用热重启。
//
// 对于代码也是一样,不仅仅是值:大多数代码更改都可以通过热重载来测试。
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () async {
final result = await showAssetPicker(
context,
config: AssetPickerConfig(
maxSelection: 9,
),
);
if (kDebugMode) {
print(result);
}
},
child: const Text('打开选择器'),
),
),
);
}
}
更多关于Flutter资源选择插件easy_asset_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资源选择插件easy_asset_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
easy_asset_picker
是一个用于在 Flutter 应用中轻松选择本地设备上的图片、视频等资源的插件。它简化了从设备图库中选择资源的过程,并提供了自定义选项来满足不同的需求。
安装
首先,你需要在 pubspec.yaml
文件中添加 easy_asset_picker
依赖:
dependencies:
flutter:
sdk: flutter
easy_asset_picker: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来安装依赖。
基本用法
-
导入包:
在需要使用
easy_asset_picker
的文件中导入包:import 'package:easy_asset_picker/easy_asset_picker.dart';
-
选择图片:
使用
EasyAssetPicker.pickImage
方法来选择图片:Future<void> pickImage() async { final image = await EasyAssetPicker.pickImage(); if (image != null) { // 处理选择的图片 print('Selected image: ${image.path}'); } else { // 用户取消了选择 print('No image selected.'); } }
-
选择视频:
使用
EasyAssetPicker.pickVideo
方法来选择视频:Future<void> pickVideo() async { final video = await EasyAssetPicker.pickVideo(); if (video != null) { // 处理选择的视频 print('Selected video: ${video.path}'); } else { // 用户取消了选择 print('No video selected.'); } }
-
选择多个资源:
使用
EasyAssetPicker.pickMultipleImages
方法来选择多个图片:Future<void> pickMultipleImages() async { final images = await EasyAssetPicker.pickMultipleImages(); if (images != null && images.isNotEmpty) { // 处理选择的图片 for (var image in images) { print('Selected image: ${image.path}'); } } else { // 用户取消了选择 print('No images selected.'); } }
自定义选项
easy_asset_picker
提供了一些自定义选项来满足不同的需求。例如,你可以设置选择资源的最大数量、是否允许编辑等。
Future<void> pickImageWithOptions() async {
final image = await EasyAssetPicker.pickImage(
maxWidth: 800,
maxHeight: 800,
quality: 85,
allowEditing: true,
);
if (image != null) {
// 处理选择的图片
print('Selected image: ${image.path}');
} else {
// 用户取消了选择
print('No image selected.');
}
}
注意事项
-
权限:在使用
easy_asset_picker
之前,确保你已经获取了必要的权限(如READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
)。你可以使用permission_handler
插件来请求权限。 -
平台支持:
easy_asset_picker
支持 Android 和 iOS 平台。在 Web 平台上可能无法使用。
示例代码
以下是一个完整的示例,展示了如何使用 easy_asset_picker
来选择图片并在 Image
控件中显示:
import 'package:flutter/material.dart';
import 'package:easy_asset_picker/easy_asset_picker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String? _imagePath;
Future<void> _pickImage() async {
final image = await EasyAssetPicker.pickImage();
if (image != null) {
setState(() {
_imagePath = image.path;
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Easy Asset Picker Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_imagePath != null
? Image.file(
File(_imagePath!),
width: 200,
height: 200,
)
: Text('No image selected.'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _pickImage,
child: Text('Pick Image'),
),
],
),
),
);
}
}