在创建Flutter类和小部件时出现了空安全错误。
在创建Flutter类和小部件时出现了空安全错误。
我正在学习Flutter / Dart,在这个视频中进行练习时,遇到了一个错误,据我所了解,这是由于空安全特性引起的,并且因为示例来自以前的版本,所以出现了问题。
import 'package:flutter/material.dart';
class OurImage extends StatelessWidget {
final String? pathImage; //change here
final double? widthImage; //change here
final double? heightImage; //change here
OurImage({this.pathImage, this.heightImage, this.widthImage});
@override
Widget build(BuildContext context) {
final photo = Container(
width: this.widthImage,
height: this.heightImage,
margin: EdgeInsets.only(right: 20.0),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(this.pathImage!), fit: BoxFit.cover)), //change here
);
return photo;
}
}
阅读这些错误1,2,3关于空安全的问题,我考虑通过在代码中添加"?"和"!"来修复出现的错误,通过这样的方式,我验证了错误不再出现。
这样修复错误的方式是正确的吗?我应该如何创建OurImage类的变量以避免出现这个错误?
在创建Flutter类和小部件时出现了null safety错误。这个问题的出现是因为在代码中使用了可为空的变量,需要考虑到这个变量可能为空的情况,并提供一个替代行为。
解决方法之一是为可为空的属性提供默认值。例如,在上述代码中,可以通过给pathImage、widthImage和heightImage添加默认值来解决这个问题。这样,当这些属性为空时,就会使用默认值替代。
另一种解决方法是在使用这些属性时进行判断。例如,在第二个示例代码中,使用了空值合并运算符(??)来判断这些属性是否为空,如果为空则使用默认值。这样可以避免在使用这些属性时出现空指针异常。
通过以上两种方法,可以解决创建Flutter类和小部件时的null safety错误。