簡體   English   中英

如何制作dart中的文件列表?

[英]How to make List of File in dart?

我們可以在 flutter 中制作文件列表嗎? 我有一個 function 我已經調用了多次,然后設置了一個值。 但是當我制作文件列表並嘗試存儲數據時,我收到錯誤說 RangeError。 這是我的代碼

 File? _displayImage;
  List<File> _displayImageList = [];
  Future<void> saveNetworkFileToLocalDirectory(String fileSrcUrl, int j) async {
    var response = await http.get(Uri.parse(fileSrcUrl));
    Directory documentsDirectory = await getApplicationDocumentsDirectory();

    String filePath =
        join(documentsDirectory.path, getFileNameFromUrl(fileSrcUrl));
    File file = File(filePath);
    log(file.toString() + ' file');
    log(filePath + ' file path');
    await file.writeAsBytes(response.bodyBytes);

    setState(() {
      _displayImage = file;
      log('j value ' + j.toString());
      _displayImageList[j] = file;
    });

Dart 中的List不允許任意 position 元素,而是從索引 position 0 到索引length - 1的對象集合,其中lengthList中元素的數量。

因此,要在List中插入一個元素,我們需要使用List提供的一種方法來擴展它。 例如,我們可以使用add()將列表的大小增加一倍,同時將元素添加到List的末尾。

如果您需要插入具有任意“位置”的元素,則應考慮在您的情況下使用Map<int, File> ,因為您可以 map 將給定的j值添加到File object。

但是,您確實需要注意 Dart 中的默認Map是按元素的插入時間排序的(最新條目 = 迭代鍵時的最后一個“位置”)。 如果您需要根據鍵對元素進行排序,我們可以考慮使用類似SplayTreeMap的東西,它在插入元素時會根據key object 自動對條目進行排序:

https://api.dart.dev/stable/2.17.5/dart-collection/SplayTreeMap-class.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM