如何解决Flutter分享包Image文件位置.toString问题
我正在使用 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 举报,一经查实,本站将立刻删除。