在 Flutter 中,我们通常有这样的事情:
class MyStatefulWidget extends StatefulWidget {
@override
_MyState createState() => _MyState();
}
class _MyState extends State<MyStatefulWidget> {
void doSomething() => print('hi');
@override
Widget build(BuildContext context) {
return Container();
}
}
Run Code Online (Sandbox Code Playgroud)
So_MyState是用 a 声明的_,这使它成为库私有的。
那么,_MySate如果Flutter 渲染引擎被认为是私有的,那么它为什么可以使用呢?
这很有趣,因为我可以doSomething()从其他文件访问,但是如果我成功了_doSomething(),我就不能再访问它了……那么为什么我可以从私有类访问公共方法,但无法从私有类访问私有方法私人课程?
虽然_MyState是私人的,StatefulWidget而State不是。
框架不操纵_MyState,它操纵这些他有权访问的较低层,具有明确定义的原型。
这基本上总结为:
StatefulWidget widget;
State foo = widget.createState();
foo.initState();
final newWidget = foo.build(this);
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9570 次 |
| 最近记录: |