如何使用flutter一次将多个文件发送到firebase

问题描述

**我需要有关此问题的帮助。我是扑的新手。而且我不能同时向 firebase 发送 1 个以上的文件。使用此代码,我可以毫无问题地发送一个文件,但是当日志中的 selecionaro 2 个文件显示这两个文件并且 firebase 仅使用两个文件名的一个文件时 **

import 'package:file_picker/file_picker.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:Flutter/material.dart';
import 'package:Flutter/services.dart';

class Estudos extends StatefulWidget {
  @override
  _Estudosstate createState() => _Estudosstate();
}

class _Estudosstate extends State<Estudos> {
  final FirebaseStorage storage = FirebaseStorage.instance;
  String fileName;

  List<PlatformFile> _paths;
  final FileType _pickingType = FileType.custom;
  final bool _multiPick = true;
  final List<UploadTask> _tasks = <UploadTask>[];
  List<String> multiFiles = [];


Future<void> openFileExplorer() async {
    setState(() {});
    try {
      _paths = (await FilePicker.platform.pickFiles(
        type: _pickingType,allowMultiple: _multiPick,allowedExtensions: ['pdf','jpg'],))
          ?.files;
    } on PlatformException catch (e) {
      //print("Unsupported operation" + e.toString());
    } catch (ex) {
      //print(ex);
    }
    if (!mounted) return;
    var arq = _paths.length;
    print('arquivos: $arq');
    setState(() {
      fileName = _paths != null ? _paths.map((e) => e.name).toString() : '...';

      uploadFireStorage();
    });
  }
 Future uploadFireStorage() async {
    var path = _paths.first.path;
    final File file = File(path);
    final Reference pastaraiz = storage.ref();
    final Reference arquivo = pastaraiz.child('estudos').child(fileName);
    final UploadTask task = arquivo.putFile(file);
    setState(() {
      _tasks.add(task);
      task.snapshotEvents.listen((TaskSnapshot storageEvent) {
        if (storageEvent.state == TaskState.running) {
          setState(() {
            const CircularProgressIndicator();
          });
        } else if (storageEvent.state == TaskState.success) {}
      });
    });
  }```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)