Flutter2.2以后创建组件需要注意的事项
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
更多关于Flutter2.2以后创建组件需要注意的事项的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html