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);
  }

照片[0].name 来自文件列表并显示为字符串:

文件:'/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 (将#修改为@)