问题描述
我正在使用 multi_image_picker 包从我的应用程序的相机胶卷中访问图像。它们作为资产出现,我使用下面的代码将它们切换到图像文件
import 'package:Flutter/material.dart';
import 'dart:async';
import 'package:multi_image_picker/multi_image_picker.dart';
import 'package:Flutter_absolute_path/Flutter_absolute_path.dart';
class PhotoSelection extends StatefulWidget {
static const String id = 'photo_selection';
@override
State<StatefulWidget> createState() {
return PhotoSelectionState();
}
}
class PhotoSelectionState extends State<PhotoSelection> {
List<Asset> images = List<Asset>();
String _error = 'No Error Detected';
List<File> files = List<File>();
@override
void initState() {
super.initState();
}
Future<File> getimageFileFromAsset(String path) async {
final file = File(path);
return file;
}
void getimageList() async {
if (files.length == 0) {
print('files list empty at start');
} else {
files.clear();
}
for (int i = 0; i < images.length; i++) {
var path2 =
await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
var file = await getimageFileFromAsset(path2);
files.add(file);
}
}
Widget buildGridView() {
return GridView.count(
crossAxisCount: 3,children: List.generate(images.length,(index) {
Asset asset = images[index];
return AssetThumb(
asset: asset,width: 300,height: 300,);
}),);
}
Future<void> loadAssets() async {
List<Asset> resultList = List<Asset>();
String error = 'No Error Detected';
try {
resultList = await MultiImagePicker.pickImages(
maxImages: 300,enableCamera: false,selectedAssets: images,cupertinoOptions: CupertinoOptions(takePhotoIcon: "chat"),materialOptions: MaterialOptions(
actionBarColor: "#abcdef",actionBarTitle: "Example App",allViewTitle: "All Photos",useDetailsView: false,selectCirclestrokeColor: "#000000",),);
} on Exception catch (e) {
error = e.toString();
}
if (!mounted) return;
setState(() {
images = resultList;
_error = error;
getimageList();
});
}
List<String> sharableFile = List<String>();
void shareFile() { sharableFile.add(photos[0].name.toString());
Share.shareFiles(sharableFile);
}
文件:'/Users/firstlast/Library/Developer/CoreSimulator/Devices/9A654C10-BD7B-4D39-8BDB-A47E8D0C1AF6/data/Media/DCIM/100APPLE/IMG_0007.JPG'
当它尝试像这样共享时,它并没有给我所有的选项:我猜测是因为图像文件位置之前的“文件:”。帮助摆脱这些字符或任何其他建议都会有所帮助 - 提前致谢。
这就是我制作要阅读的照片列表的方式:
class Photo {
int value;
final File name;
Photo(this.value,this.name);
}
List<Photo> photos = [];
void makePhotoList() {
for (int i = 0; i < valuesSet.length; i++) {
photos.add(Photo(values[i],files[i]));
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)