在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();
}
}
因此_MyState
用_
声明,这使它成为私有库。
因此,如果Flutter渲染引擎被要求是私有的,那么如何使用_MySate
?
这很有趣,因为我可以从其他文件访问doSomething()
,但是如果我将其创建为_doSomething()
,我将无法再访问它...所以我怎么能从一个文件中访问公共方法私有类,但是我无法从私有类访问私有方法?
答案 0 :(得分:2)
_MyState
是私有的,而StatefulWidget
和State
不是私有的。
该框架不会操纵_MyState
,它会使用定义良好的原型来操纵他可以访问的这些较低层。
这基本上可以归纳为:
StatefulWidget widget;
State foo = widget.createState();
foo.initState();
final newWidget = foo.build(this);
...