正如问题所示,我一直在尝试使用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();
}
是否有人已经在他们的应用中构建了这样的功能,或者发现了以这种方式实现它的问题?