这是一个非常简单的问题,有时我会看到类似widget.title
或widget.(anything)
的内容;类似于AppBar
小部件的文本小部件子级中的示例:
class MyApp extends StatefulWidget{
// some declarations here
@override
_MyApp createState() => _MyApp();
}
class _MyApp extends State<MyApp>{
// some declaration here
@override
Widget build(BuildContext context){
return MaterialApp(
home: Scaffold(
appBar: AppBar(child: Text(widget.title),),
),
);
}
}
这实际上是什么?
widget.title
我的意思是,widget
引用是什么?是什么?
答案 0 :(得分:1)
MyApp
类扩展了StatefulWidget,这意味着此窗口小部件存储可变状态。当MyApp小部件首次插入树中时,框架将调用createState()
函数来创建_MyAppState
的新实例以与树中的该位置相关联。 (请注意,State的子类通常以引号引起来,以指示它们是私有实现的详细信息。)当此小部件的父级重建时,父级会创建MyApp
的新实例,但是框架会重用{{1} }已经在树中的实例,而不是再次调用createState。
要访问当前_MyAppState
的属性,MyApp
可以使用其_MyAppState
。如果父级重建并创建了一个新的widget property
,则MyApp
将使用新的窗口小部件值进行重建。如果希望在窗口小部件属性更改时收到通知,请覆盖_MyAppState
函数,该函数作为oldWidget传递,使您可以将旧窗口小部件与当前窗口小部件进行比较。
现在按文档显示:小工具属性
此属性由框架在调用之前初始化 initState。如果父母将树中的该位置更新为新位置 与当前的runtimeType和Widget.key相同的窗口小部件 配置,框架将更新此属性以引用 新的小部件,然后调用didUpdateWidget,并传递旧的 配置作为参数。
答案 1 :(得分:1)