我是Flutter的新手,在阅读教程时,我看到了以下代码片段:
// Within the `FirstRoute` widget
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondRoute()),
);
}
为什么MaterialPageRoute
中的调用有效?我看到它请求一个类型为WidgetBuilder
的对象,但我们传递的是一个BuildContext
。context
周围的括号是否表示对WidgetBuilder
的构造函数的调用?
构造器参数接受WidgetBuilder类型的对象。什么是";隐藏的";是typedef:
typedef WidgetBuilder = Widget Function(BuildContext context);
所以你传递的实际上是一个与之匹配的匿名函数
它被称为箭头函数。实际上这段代码
(context) => SecondRoute()
可以重写为:
MaterialPageRoute(builder: (context) {
return SecondRoute();
})
小部件生成器是一个函数,MaterialPageRoute需要它作为参数。