Firebase LateInitializationError:字段'_imagePicked@20490806';尚未初始化
在尝试初始化数据时获取此信息Firebase LateInitializationError:字段'_imagePicked@20490806';尚未初始化,firebase,flutter,dart,Firebase,Flutter,Dart,在尝试初始化数据时获取此信息 [The following LateError was thrown building UserImagePicker(dirty, state: _UserImagePickerState#adbb9): LateInitializationError: Field '_imagePicked@20490806' has not been initialized.] 代码如下: late File _imagePicked; final _pick
[The following LateError was thrown building UserImagePicker(dirty, state:
_UserImagePickerState#adbb9):
LateInitializationError: Field '_imagePicked@20490806' has not been initialized.]
代码如下:
late File _imagePicked;
final _picker = ImagePicker();
void _pickImage(ImageSource src) async {
final pickedImageFile = await _picker.getImage(source: src);
if (pickedImageFile != null) {
setState(() {
_imagePicked = File(pickedImageFile.path);
});
}
}
Dart中的可为空的非
late
字段初始化为null
:
String? string;
print(string); // prints null
对于late
字段,情况并非如此。late字符串
不能包含null
,因为null
不是类型字符串
的有效值(这是null安全的全部要点)
相反,late
字段在首次分配之前未初始化。如果试图获取未初始化字段的值,则会出现LateInitializationError
,而不是返回null
在您的情况下,我怀疑某处有一行包含:
if (_imagePicked == null) {
// set _imagePicked
}
简单的解决方法是将\u imagePicked
设为空。这有两个好处:
\u isImagePicked
的额外布尔值来跟踪您是否设置了此值
\u imagePicked
为空时尝试调用\u imagePicked.foo()
)
能否更新调用_pickImage()函数的位置?我认为当调用函数_pickImage()时,文件_imagePicked中没有任何内容。构建应用程序时,\u imagePicked没有任何内容,这将导致应用程序崩溃。请尝试“延迟文件”\u imagePicked