Flutter2.2以后创建组件需要注意的事项

发布于 3 年前 作者 phonegap100 973 次浏览 最后一次编辑是 3 年前 来自 分享

2021年5月19日的时候Flutter官方发布了Flutter2.2.0的版本,Flutter2.2.0之后的版本中,创建组件的构造函数时需要注意把Key改为可空类型。

Flutter2.2.0之前我们生成的组件格式如下:


class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);

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

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Container(
       child: Text("StatefulWidget"),
    );
  }
}

但是Flutter2.2.0之后它在HomePage({Key key}) : super(key: key); 这一行会有警告提示。

警告提示内容如下:

The parameter 'key' can't have a value of 'null' because of its type, but the implicit default value is 'null'.
Try adding either an explicit non-'null' default value or the 'required' modifier

解决办法:HomePage({Key key}) : super(key: key);代码改为 HomePage({Key? key}) : super(key: key);

其中的{Key? key}表示key为可空类型。

改完后的代码:


class HomePage extends StatefulWidget {
  HomePage({Key? key}) : super(key: key);

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

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Container(
       child: Text("StatefulWidget"),
    );
  }
}

HomePage({Key? key}) : super(key: key);中的key表示的是组件的唯一标识符,正常情况我们不需要传入任何值的,刚开始学的时候可以不用管这个key。

例如:我们想的是在商品列表页面通过事件调用属性筛选的侧边栏,这个时候就可以给Scaffold指定一个Key,然后通过对应的Key来调用Scaffold里面的侧边栏,详情见Flutter仿京东商城项目11讲《 Flutter仿京东商城项目 商品列表页面二级筛选导航布局》:https://www.itying.com/goods-1120.html

回到顶部