Parcourir la source

[new]测试文件选择上传功能

zk il y a 1 an
Parent
commit
bc330af13f
1 fichiers modifiés avec 62 ajouts et 0 suppressions
  1. 62 0
      lib/handler/audio_picker_handler.dart

+ 62 - 0
lib/handler/audio_picker_handler.dart

@@ -0,0 +1,62 @@
+import 'dart:io';
+
+import 'package:photo_manager/photo_manager.dart';
+
+class AudioPickerHandler {
+  AudioPickerHandler._();
+
+  //申请权限
+  static Future<bool> requestPermissionExtend() async {
+    final PermissionState ps = await PhotoManager.requestPermissionExtend();
+    return ps.hasAccess;
+  }
+
+  //是否有权限
+  static Future<bool> hasPermission() async {
+    final PermissionState ps = await PhotoManager.getPermissionState(
+        requestOption: const PermissionRequestOption());
+    return ps.hasAccess;
+  }
+
+  //获取AssetPathEntity
+  static Future<List<AssetPathEntity>> getAssetPathList() async {
+    final PMFilter filter = FilterOptionGroup(
+      audioOption: const FilterOption(
+        sizeConstraint: SizeConstraint(ignoreSize: true),
+      ),
+    );
+    final List<AssetPathEntity> paths = await PhotoManager.getAssetPathList(
+      onlyAll: true,
+      type: RequestType.audio,
+      filterOption: filter,
+    );
+    return paths;
+  }
+
+  //获取本地音频资源列表
+  static Future<List<AssetEntity>> getAssetList(AssetPathEntity path, int page,
+      {int size = 100}) async {
+    final List<AssetEntity> entities = await path.getAssetListPaged(
+      page: page,
+      size: size,
+    );
+    return entities;
+  }
+
+  //根据id获取AssetEntity
+  static Future<AssetEntity?> getAssetEntity(String? id) async {
+    if (id == null) {
+      return null;
+    }
+    return await AssetEntity.fromId(id);
+  }
+
+  //根据id获取文件
+  static Future<File?> getAssetFile(String? id) async {
+    if (id == null) {
+      return null;
+    }
+    AssetEntity? assetEntity = await AssetEntity.fromId(id);
+    return await assetEntity?.file;
+  }
+}