gpt4 book ai didi

Map 中的 Flutter 设置属性导致 UnsupportedError (Unsupported operation : read-only)

转载 作者:行者123 更新时间:2023-12-03 04:15:42 26 4
gpt4 key购买 nike

我在状态类中有一个调用 setState 的方法,但是无论何时调用它都会抛出 UnsupportedError (Unsupported operation: read-only)并没有提供其他信息。你能看出我的代码有什么问题可以让它这样做吗?我似乎这应该很简单......

Future _uploadFile(imageFile, imageFilename, String imageNumber) async {
_user = await DBProvider.db.getUser();
final FirebaseStorage _storage = FirebaseStorage(storageBucket: 'gs://circle-fc687.appspot.com');
StorageReference _storageRef = _storage.ref().child('users').child('${_user['uid']}').child('$imageFilename');

final Directory systemTempDir = Directory.systemTemp;

final File file = await File('${systemTempDir.path}/$imageFile').create();

StorageUploadTask _uploadTask = _storageRef.putFile(file);

await _uploadTask.onComplete;
print('Upload complete');
String downloadLink = await _storageRef.getDownloadURL();

setState(() {
_user['imageOne'] = downloadLink;
});
}

编辑
调用 setState不是问题,因为试图更新 Map 属性 _user['imageOne'] = downloadLink;从这个方法内部也会导致同样的错误。这个变量不是 final 或类似的东西,只是 Map<String, dynamic>

最佳答案

通常 DB 返回不可变/不可修改的数据,因此您必须在更改之前克隆它:

final newUser = {
..._user,
'imageOne': downloadLink
};
或者
final newUser = Map.of(_user);
newUser['imageOne'] = downloadLink;
尽管不可修改的映射继承自同一个 Map 类,但它具有不同的运行时类型,实际上不支持 []= 操作。

关于Map 中的 Flutter 设置属性导致 UnsupportedError (Unsupported operation : read-only),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58855894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com