lateinitializationerror 字段 imageFile 尚未初始化

时间:2021-07-16 12:26:55

标签: flutter flutter-web flutter-image

我正在尝试从 flutter web 项目中的图库上传图像。但是,当我单击上传按钮时,出现错误 "======== 小部件库捕获的异常 ==================== ==========================LateInitializationError: 字段 imageFile 尚未初始化。" 什么可能导致此错误?这是我的代码:

final picker = ImagePicker();
late File imageFile;

Future chooseImage(ImageSource source) async {
  final pickedFile = await picker.pickImage(source: source);
  setState(() {
    imageFile = File(pickedFile!.path);
  });
}

Container(
    child: imageFile != null ?
    Container(
      height: 200,
      width: 200,
      decoration: BoxDecoration(
        image: DecorationImage(
          image: FileImage(imageFile),
        ),
        borderRadius: BorderRadius.circular(20)),
      padding: const EdgeInsets.all(15.0),
    ) :
    Padding(
      padding: const EdgeInsets.all(15.0),
        child: ClipRRect(
          borderRadius: BorderRadius.circular(20.0),
          child: Image.asset(
            defaultPic,
            height: 250.0,
            width: 300.0,
            fit: BoxFit.cover,
          ),
        ),
    ),
  ),
  ElevatedButton(
    onPressed: () {
      chooseImage(ImageSource.gallery);
    },
    child: Text('Upload Picture'),
    style: ElevatedButton.styleFrom(
      primary: Colors.red,
      elevation: 3,
      shape: new RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(50.0),
      ),
    ),
  )

1 个答案:

答案 0 :(得分:0)

你确定 imageFile 被正确初始化了吗?我认为问题在于,当您设置 imageFile 的值时,您将其设置为 null。检查 File(pickedFile!.path) 我认为这是空的。最后一件事永远不要使用 ! 运算符,而不是使用 ?。基本上你需要检查是否 pickedFile.path != null.