无法显示文件?作为图像

cannot display File? as image

我正在使用 imagepicker 来捕获图像,我已经实现了声音空安全,并将其传递到第二页,但是当我尝试在第二页上显示图像时出现错误: 参数类型 'File?' 无法分配给参数类型 'File'.

请帮忙,谢谢:)

下面是代码片段

// 第 1 页:变量语句和 getImage 函数

File? _image;
final _picker = ImagePicker();

Future getImage() async {
Map<Permission, PermissionStatus> statuses = await [
Permission.camera,
].request();

if (await Permission.camera.request().isGranted) {
PickedFile? _pickedFile = await _picker.getImage(
source: ImageSource.camera, maxHeight: 1920, maxWidth: 1080);
setState(() {
_image = File(_pickedFile!.path);
});
}}

// 第一页:执行getImage函数的按钮

ElevatedButton(
                onPressed: () async {
                  await getImage();
                  Navigator.push(context, MaterialPageRoute(builder: (context) {
                    return SecondPage(image: _image);
                  })); //callback
                },

// 第二页 class

class SecondPage extends StatefulWidget {
  File? image;

  //c'tor
  SecondPage({
    Key? key,
    @required this.image,
  }) : super(key: key);

  @override
  _SecondPageState createState() => _SecondPageState();
}

//在第2页正文中显示错误的地方

SizedBox(
          width: 300,
          height: 265,
          child:  Image.file(widget.image),
            ),

您收到的错误来自空安全,类型 File? 意味着它可以是 Filenull,但您的变量只接受 File,没有 null 值。

为此,您可以通过在变量末尾添加 ! 来“强制”使用 'non-null' 变量,但这样做时要小心。

 Image.file(widget.image!),

您可以在官方文档中了解更多关于空安全语法和原则:https://flutter.dev/docs/null-safety

https://api.flutter.dev/flutter/material/DropdownButton-class.html.