[英]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
的對象集合,其中length
是List
中元素的數量。
因此,要在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.