【问题标题】:How to convert List<Asset> Array to List<File> Array in Dart | Flutter?如何在 Dart 中将 List<Asset> 数组转换为 List<File> 数组扑?
【发布时间】:2021-08-01 11:38:31
【问题描述】:

我有基于 Flutter multi_image_picker: ^4.7.14 依赖的 List 数组。如何将 List Asset Array 转换为 List File Array?

这是代码

class _ConvertImageState extends State<ConvertImage> {
  List<Asset> images = List<Asset>();

  @override
  void initState() {
    super.initState();
  }

  Future<void> pickImages() async {
    List<Asset> resultList = List<Asset>();

    try {
      resultList = await MultiImagePicker.pickImages(
        maxImages: 20,
        enableCamera: true,
        selectedAssets: images,
        materialOptions: MaterialOptions(
          selectCircleStrokeColor: "white",
          actionBarTitle: "Select Images",
          allViewTitle: "All Images",
          actionBarColor: "#3b3b3b",
          actionBarTitleColor: "white",
          statusBarColor: '#bbbbbb',

          selectionLimitReachedText: "You can select minimum 3 and maximum 20 images",
        ),
      );
    } on Exception catch (e) {
      print(e);
    }

    setState(() {
      images = resultList;
    });
  }

  @override
  Widget build(BuildContext context) {......}
}

我可以用循环来做吗?请问,谁能告诉我正确的方法?

【问题讨论】:

    标签: arrays list flutter file dart


    【解决方案1】:

    在这里我找到了答案。这是我的工作代码。我觉得是对的。

    class _ConvertImageState extends State<ConvertImage> {
      List<Asset> images = List<Asset>();
      List<File> fileImageArray = [];
    
      @override
      void initState() {
        super.initState();
      }
    
      Future<void> pickImages() async {
        List<Asset> resultList = List<Asset>();
    
        try {
          resultList = await MultiImagePicker.pickImages(
            maxImages: 20,
            enableCamera: true,
            selectedAssets: images,
            materialOptions: MaterialOptions(
              selectCircleStrokeColor: "white",
              actionBarTitle: "Select Images",
              allViewTitle: "All Images",
              actionBarColor: "#3b3b3b",
              actionBarTitleColor: "white",
              statusBarColor: '#bbbbbb',
    
              selectionLimitReachedText: "You can select minimum 3 and maximum 20 images",
            ),
          );
        } on Exception catch (e) {
          print(e);
        }
    
        setState(() {
          images = resultList;
          putToFileArray();
        });
      }
    
      void putToFileArray(){
    
        fileImagesArray.clear();
        images.forEach((imageAsset) async {
          final filePath =
          await FlutterAbsolutePath.getAbsolutePath(imageAsset.identifier);
    
          File tempFile = File(filePath);
          if (tempFile.existsSync()) {
            fileImageArray.add(tempFile);
          }
        });
    
      }
    
      @override
      Widget build(BuildContext context) {......}
    }
    

    FlutterAbsolutePathClass(依赖)

    flutter_absolute_path:^1.0.6

    链接:https://pub.dev/packages/flutter_absolute_path

    打印数组

    onPressed: () {
      print(fileImageArray.toString());
    };
    

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2014-08-12
      • 2011-05-18
      • 1970-01-01
      相关资源
      最近更新 更多