了解Dart私人课程

时间:2018-11-28 19:07:41

标签: dart flutter

在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(),我将无法再访问它...所以我怎么能从一个文件中访问公共方法私有类,但是我无法从私有类访问私有方法?

1 个答案:

答案 0 :(得分:2)

_MyState是私有的,而StatefulWidgetState不是私有的。

该框架不会操纵_MyState,它会使用定义良好的原型来操纵他可以访问的这些较低层。

这基本上可以归纳为:

StatefulWidget widget;
State foo = widget.createState();

foo.initState();
final newWidget = foo.build(this);
...