我要扩展FileImage。
但是我发现有一些代码需要“不可为空”功能:
Future<ui.Codec> _loadAsync(FileImage key, DecoderCallback decode) async {
assert(key == this);
final Uint8List bytes = await file.readAsBytes();
if (bytes.lengthInBytes == 0) {
// The file may become available later.
PaintingBinding.instance!.imageCache!.evict(key);
throw StateError('$file is empty and cannot be loaded as an image.');
}
return await decode(bytes);
}
“ PaintingBinding.instance!.imageCache!.evict(key);”的等效代码是什么? ?
答案 0 :(得分:0)
说你有
int? foo = 1; // foo is nullable.
当您执行以下操作时:
foo!.toString();
您要告诉编译器我知道foo
不是null
,让我继续。因此,它等效于:
assert(foo != null);
foo.toString();
这实际上称为bang运算符,如果foo
为null
,则会出现错误。