我看到很多代码都在做,比如
static constexpr std::size_t value = 1024u;
Run Code Online (Sandbox Code Playgroud)
我明白这u是指定1024为无符号整数,但为什么要标记为unsigned?
InheritedWidget 的Flutter文档说
\n\n\n有效地沿树传播信息的小部件的基类。
\n要从构建上下文获取特定类型的继承窗口小部件的最近实例,请使用 BuildContext.inheritFromWidgetOfExactType。
\n当以这种方式引用继承的小部件时,\n当继承的小部件本身更改状态时,将导致使用者重建。
\n
鉴于 Flutter 中的小部件是不可变的,并且在示例代码中..
\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor);\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\nRun Code Online (Sandbox Code Playgroud)\n颜色属性final因此无法重新分配。假设这个小部件位于树的顶部,就像大多数示例一样,它什么时候会有用。对于要替换的小部件,必须创建一个新实例。
据推测,在完成此操作的情况下,也将创建作为子级传递的任何内容的新实例,从而导致该子级的后代也进行重建,创建其子级的新实例等。
\n无论如何,最终还是重建了整棵树。inheritFromWidgetOfExactType那么,当 InheritedWidget 实例的数据永远不会改变该实例时,使用 using 进行选择性更新是没有意义的?
编辑:
\n这是我不明白的最简单的例子,我可以将它们放在一起。\n在这个例子中,“更改” …