在"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_声明,这使它成为库私有.

So how come the Flutter render engine can use 100 if it's sopposed to be private?

这很有趣,因为我可以从其他文件中访问doSomething()个,但如果我将其设置为_doSomething(),我将无法再访问它...那么,为什么我可以从私有类访问公共方法,但不能从私有类访问私有方法呢?

推荐答案

_MyState是私有的,StatefulWidgetState不是.

该框架不操纵_MyState,它操纵他有权访问的这些较低层,具有定义良好的原型.

这基本上归结为:

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

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

Dart相关问答推荐

当未指定返回类型时,dart 显示另一个函数内部的确切返回类型,但对于顶层函数显示为动态

带有字符串键的 Dart Map,与忽略大小写进行比较

在小部件之间画一条线

Flutter - 为什么滑块不会在 AlertDialog 中更新?

如何使用Flutter dio 下载文件?

如何在仍然引用来自 pub.dartlang.org 的包的同时运行私有 pub 服务器?

IndexedDB访问速度和效率

属性 'docs' 不能无条件访问,因为接收到的可能是 'null' Flutter

Flutter-键盘显示和隐藏导致生成调用

如何在 Dart 中获取数字的长度?

将ListTile图标向左对齐

如何更改Flatter DevTools的默认浏览器?

polymer SEO 是否友好?

Dart 会在多核环境中并行执行隔离吗?

如何将 3 字节的 unicode 字符写为字符串文字

dart 是否支持运算符重载

如何在 Ubuntu 网络服务器上为 Dart 安装 pub(命令行使用)

用于 dartlang 的 REPL

Exception: Concurrent modification during iteration: Instance(length:17) of '_GrowableList';

在 DART 中创建泛型类型的实例