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

1 回复

更多关于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 来安装依赖。

基本用法

  1. 导入包

    在需要使用 easy_asset_picker 的文件中导入包:

    import 'package:easy_asset_picker/easy_asset_picker.dart';
    
  2. 选择图片

    使用 EasyAssetPicker.pickImage 方法来选择图片:

    Future<void> pickImage() async {
      final image = await EasyAssetPicker.pickImage();
      if (image != null) {
        // 处理选择的图片
        print('Selected image: ${image.path}');
      } else {
        // 用户取消了选择
        print('No image selected.');
      }
    }
    
  3. 选择视频

    使用 EasyAssetPicker.pickVideo 方法来选择视频:

    Future<void> pickVideo() async {
      final video = await EasyAssetPicker.pickVideo();
      if (video != null) {
        // 处理选择的视频
        print('Selected video: ${video.path}');
      } else {
        // 用户取消了选择
        print('No video selected.');
      }
    }
    
  4. 选择多个资源

    使用 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_STORAGEWRITE_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'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部