Flutter 2.0空安全之自定义Widge适配
自定义Widget的空安全适配分两种情况:
- Widget的空安全适配
- State的空安全适配
Widget的空安全适配
对于自定的Widget无论是页面的某控件还是整个页面,通常都会为Widget定义一些属性。在进行空安全适配时要对属性进行一下分类:
- 可空的属性:通过?进行修饰
- 不可空的属性:在构造函数中设置默认值或者通过
required
进行修饰
class WebView extends StatefulWidget {
String? url;
final String? statusBarColor;
final String? title;
final bool? hideAppBar;
final bool backForbid;
WebView(
{this.url,
this.statusBarColor,
this.title,
this.hideAppBar,
this.backForbid = false})
...
上述示例是WebView模块进行空安全适配后的效果。
提示:如果构造方法中使用了@required
那么需要改成required
。
State的空安全适配
State的空安全适配主要是根据它的成员变量是否可空进行分类:
- 可空的变量:通过
?
进行修饰 - 不可空的变量:可采用以下两种方式进行适配:定义时初始化;使用
late
修饰为延时变量
下面是项目中的State适配了空安全后的主要代码效果可以参考下:
class _TravelPageState extends State<TravelPage> with TickerProviderStateMixin {
late TabController _controller; //延时初始
List<TravelTab> tabs = []; //定义时初始化
...
@override
void initState() {
super.initState();
_controller = TabController(length: 0, vsync: this);
...