如何从外部存储中获取,调整大小和显示照片

时间:2018-06-03 13:25:07

标签: dart flutter

正如问题所示,我一直在尝试使用Flutter在网格视图中加载,调整大小并显示来自Android上本地存储的所有照片,这对于许多使用多媒体的应用来说是非常常见的功能。我做的是安装path_provider和图像包(以及android运行时权限的权限插件)并尝试获取图像列表(来自'图像'包),所以我可以调整大小它们正确用于内存效率并使用Image.memory显示。但是,我的应用程序在执行此操作时会挂起:

Future<List<i.Image>> getImages() async {
  bool hasPermission =
      await SimplePermissions.checkPermission(Permission.ReadExternalStorage);
  if (!hasPermission) {
    bool requestedPermission = await SimplePermissions
        .requestPermission(Permission.ReadExternalStorage);
    if (requestedPermission) {
    } else {
      print('Permission Denied');
      return [];
    }
  }
  Directory directory = await getExternalStorageDirectory();
  return directory
      .list(
        recursive: true,
      )
      .where((entity) =>
          entity.existsSync() &&
          (entity.path.toLowerCase().endsWith('.jpg') ||
              entity.path.toLowerCase().endsWith('.png') ||
              entity.path.toLowerCase().endsWith('.jpeg')))
      .map<i.Image>((entity) {
    File file = new File(entity.path);
    return i.copyResize(i.decodeImage(file.readAsBytesSync()), 200);
  }).toList();
}

是否有人已经在他们的应用中构建了这样的功能,或者发现了以这种方式实现它的问题?

0 个答案:

没有答案