我有时会看到这样的东西:widget.title
或widget.(anything)
处于Flutter状态;就像AppBar
Widget的 *Text Widget子级 * 中的示例:
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
是什么意思?是什么事?
3条答案
按热度按时间swvgeqrz1#
MyApp
类扩展了StatefulWidget,这意味着这个小部件存储可变状态。当MyApp小部件第一次插入到树中时,框架调用createState()
函数来创建_MyAppState
的新示例,以与树中的该位置相关联。(注意,State的子类通常用前导下划线命名,以表明它们是私有的实现细节。)当这个小部件的父级重新构建时,父级创建了MyApp
的新示例,但是框架会重用已经在树中的_MyAppState
示例,而不是再次调用createState。要访问当前
MyApp
的属性,_MyAppState
可以使用其widget property
。如果父对象重新生成并创建了一个新的MyApp
,则_MyAppState
将使用新的小部件值重新生成。如果您希望在小部件属性更改时得到通知,请重写didUpdateWidget()
函数,该函数以oldWidget的形式传递,以便您将旧的小部件与当前的小部件进行比较。根据Docs:widget属性
此属性由框架在调用initState之前初始化。如果父节点将树中的这个位置更新为具有与当前配置相同的runtimeType和Widget.key的新小部件,框架将更新这个属性以引用新小部件,然后调用didUpdateWidget,将旧配置作为参数传递。
reference link
du7egjpx2#
长答短
您已经扩展了
State
类。State
类有一个名为widget
的readonly
属性。这就是你所指的。qvtsj1bj3#
State类有一个名为widget的只读属性。这就是你所指的。
https://api.flutter.dev/flutter/widgets/State/widget.html