自定义Widget的空安全适配分两种情况:

  1. Widget的空安全适配
  2. 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);
    ...

标签: Flutter 2.0, Flutter 2.0空安全, Flutter 2.0自定义Widge适配空安全

添加新评论