| Index: sky/sdk/lib/widgets/widget.dart
|
| diff --git a/sky/sdk/lib/widgets/widget.dart b/sky/sdk/lib/widgets/widget.dart
|
| index b099a3a98df227e31c9001cb19afdf107a47fb14..3cbb28078c1ad26b2345ed9228ebcec61b2ea089 100644
|
| --- a/sky/sdk/lib/widgets/widget.dart
|
| +++ b/sky/sdk/lib/widgets/widget.dart
|
| @@ -207,6 +207,7 @@ abstract class Widget {
|
| return newNode;
|
| }
|
|
|
| + @override
|
| String toString([String prefix = '', String startPrefix = '']) {
|
| String childrenString = '';
|
| List<Widget> children = new List<Widget>();
|
| @@ -246,11 +247,13 @@ abstract class TagNode extends Widget {
|
|
|
| Widget child;
|
|
|
| + @override
|
| void walkChildren(WidgetTreeWalker walker) {
|
| if (child != null)
|
| walker(child);
|
| }
|
|
|
| + @override
|
| void _sync(Widget old, dynamic slot) {
|
| Widget oldChild = old == null ? null : (old as TagNode).child;
|
| child = syncChild(child, oldChild, slot);
|
| @@ -260,16 +263,19 @@ abstract class TagNode extends Widget {
|
| assert(_root == root); // in case a subclass reintroduces it
|
| }
|
|
|
| + @override
|
| void updateSlot(dynamic newSlot) {
|
| child.updateSlot(newSlot);
|
| }
|
|
|
| + @override
|
| void remove() {
|
| if (child != null)
|
| removeChild(child);
|
| super.remove();
|
| }
|
|
|
| + @override
|
| void detachRoot() {
|
| if (child != null)
|
| child.detachRoot();
|
| @@ -287,6 +293,7 @@ abstract class Inherited extends TagNode {
|
|
|
| Inherited({ String key, Widget child }) : super._withKey(child, key);
|
|
|
| + @override
|
| void _sync(Widget old, dynamic slot) {
|
| if (old != null && syncShouldNotify(old)) {
|
| final Type ourRuntimeType = runtimeType;
|
| @@ -413,17 +420,20 @@ abstract class Component extends Widget {
|
| Widget _built;
|
| dynamic _slot; // cached slot from the last time we were synced
|
|
|
| + @override
|
| void updateSlot(dynamic newSlot) {
|
| _slot = newSlot;
|
| if (_built != null)
|
| _built.updateSlot(newSlot);
|
| }
|
|
|
| + @override
|
| void walkChildren(WidgetTreeWalker walker) {
|
| if (_built != null)
|
| walker(_built);
|
| }
|
|
|
| + @override
|
| void remove() {
|
| assert(_built != null);
|
| assert(root != null);
|
| @@ -432,6 +442,7 @@ abstract class Component extends Widget {
|
| super.remove();
|
| }
|
|
|
| + @override
|
| void detachRoot() {
|
| assert(_built != null);
|
| assert(root != null);
|
| @@ -468,6 +479,7 @@ abstract class Component extends Widget {
|
| // assert(_built != null && old == null)
|
| // 3) Syncing against an old version
|
| // assert(_built == null && old != null)
|
| + @override
|
| void _sync(Component old, dynamic slot) {
|
| assert(_built == null || old == null);
|
|
|
| @@ -522,26 +534,31 @@ abstract class StatefulComponent extends Component {
|
|
|
| bool _disqualifiedFromEverAppearingAgain = false;
|
|
|
| + @override
|
| void didMount() {
|
| assert(!_disqualifiedFromEverAppearingAgain);
|
| super.didMount();
|
| }
|
|
|
| + @override
|
| void _buildIfDirty() {
|
| assert(!_disqualifiedFromEverAppearingAgain);
|
| super._buildIfDirty();
|
| }
|
|
|
| + @override
|
| void _sync(Widget old, dynamic slot) {
|
| assert(!_disqualifiedFromEverAppearingAgain);
|
| super._sync(old, slot);
|
| }
|
|
|
| + @override
|
| Widget syncChild(Widget node, Widget oldNode, dynamic slot) {
|
| assert(!_disqualifiedFromEverAppearingAgain);
|
| return super.syncChild(node, oldNode, slot);
|
| }
|
|
|
| + @override
|
| bool retainStatefulNodeIfPossible(StatefulComponent newNode) {
|
| assert(!_disqualifiedFromEverAppearingAgain);
|
| assert(newNode != null);
|
| @@ -678,6 +695,7 @@ abstract class RenderObjectWrapper extends Widget {
|
| newNode._ancestor = _ancestor;
|
| }
|
|
|
| + @override
|
| void _sync(RenderObjectWrapper old, dynamic slot) {
|
| // TODO(abarth): We should split RenderObjectWrapper into two pieces so that
|
| // RenderViewObject doesn't need to inherit all this code it
|
| @@ -702,6 +720,7 @@ abstract class RenderObjectWrapper extends Widget {
|
| syncRenderObject(old);
|
| }
|
|
|
| + @override
|
| void updateSlot(dynamic newSlot) {
|
| // We never use the slot except during sync(), in which
|
| // case our parent is handing it to us anyway.
|
| @@ -729,12 +748,14 @@ abstract class RenderObjectWrapper extends Widget {
|
| }
|
| }
|
|
|
| + @override
|
| void remove() {
|
| assert(root != null);
|
| _nodeMap.remove(root);
|
| super.remove();
|
| }
|
|
|
| + @override
|
| void detachRoot() {
|
| assert(_ancestor != null);
|
| assert(root != null);
|
| @@ -747,10 +768,12 @@ abstract class LeafRenderObjectWrapper extends RenderObjectWrapper {
|
|
|
| LeafRenderObjectWrapper({ String key }) : super(key: key);
|
|
|
| + @override
|
| void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
|
| assert(false);
|
| }
|
|
|
| + @override
|
| void detachChildRoot(RenderObjectWrapper child) {
|
| assert(false);
|
| }
|
| @@ -765,11 +788,13 @@ abstract class OneChildRenderObjectWrapper extends RenderObjectWrapper {
|
| Widget _child;
|
| Widget get child => _child;
|
|
|
| + @override
|
| void walkChildren(WidgetTreeWalker walker) {
|
| if (child != null)
|
| walker(child);
|
| }
|
|
|
| + @override
|
| void syncRenderObject(RenderObjectWrapper old) {
|
| super.syncRenderObject(old);
|
| Widget oldChild = old == null ? null : (old as OneChildRenderObjectWrapper).child;
|
| @@ -779,6 +804,7 @@ abstract class OneChildRenderObjectWrapper extends RenderObjectWrapper {
|
| assert(oldChild == null || child == oldChild || oldChild.parent == null);
|
| }
|
|
|
| + @override
|
| void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
|
| final root = this.root; // TODO(ianh): Remove this once the analyzer is cleverer
|
| assert(root is RenderObjectWithChildMixin);
|
| @@ -787,6 +813,7 @@ abstract class OneChildRenderObjectWrapper extends RenderObjectWrapper {
|
| assert(root == this.root); // TODO(ianh): Remove this once the analyzer is cleverer
|
| }
|
|
|
| + @override
|
| void detachChildRoot(RenderObjectWrapper child) {
|
| final root = this.root; // TODO(ianh): Remove this once the analyzer is cleverer
|
| assert(root is RenderObjectWithChildMixin);
|
| @@ -795,6 +822,7 @@ abstract class OneChildRenderObjectWrapper extends RenderObjectWrapper {
|
| assert(root == this.root); // TODO(ianh): Remove this once the analyzer is cleverer
|
| }
|
|
|
| + @override
|
| void remove() {
|
| if (child != null)
|
| removeChild(child);
|
| @@ -815,11 +843,13 @@ abstract class MultiChildRenderObjectWrapper extends RenderObjectWrapper {
|
|
|
| final List<Widget> children;
|
|
|
| + @override
|
| void walkChildren(WidgetTreeWalker walker) {
|
| for (Widget child in children)
|
| walker(child);
|
| }
|
|
|
| + @override
|
| void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
|
| final root = this.root; // TODO(ianh): Remove this once the analyzer is cleverer
|
| assert(slot == null || slot is RenderObject);
|
| @@ -828,6 +858,7 @@ abstract class MultiChildRenderObjectWrapper extends RenderObjectWrapper {
|
| assert(root == this.root); // TODO(ianh): Remove this once the analyzer is cleverer
|
| }
|
|
|
| + @override
|
| void detachChildRoot(RenderObjectWrapper child) {
|
| final root = this.root; // TODO(ianh): Remove this once the analyzer is cleverer
|
| assert(root is ContainerRenderObjectMixin);
|
| @@ -836,6 +867,7 @@ abstract class MultiChildRenderObjectWrapper extends RenderObjectWrapper {
|
| assert(root == this.root); // TODO(ianh): Remove this once the analyzer is cleverer
|
| }
|
|
|
| + @override
|
| void remove() {
|
| assert(children != null);
|
| for (var child in children) {
|
| @@ -859,6 +891,7 @@ abstract class MultiChildRenderObjectWrapper extends RenderObjectWrapper {
|
| return false;
|
| }
|
|
|
| + @override
|
| void syncRenderObject(MultiChildRenderObjectWrapper old) {
|
| super.syncRenderObject(old);
|
|
|
| @@ -1006,6 +1039,7 @@ class WidgetSkyBinding extends SkyBinding {
|
| assert(SkyBinding.instance is WidgetSkyBinding);
|
| }
|
|
|
| + @override
|
| void dispatchEvent(sky.Event event, HitTestResult result) {
|
| assert(SkyBinding.instance == this);
|
| super.dispatchEvent(event, result);
|
| @@ -1033,16 +1067,19 @@ abstract class App extends StatefulComponent {
|
| onBack();
|
| }
|
|
|
| + @override
|
| void didMount() {
|
| super.didMount();
|
| SkyBinding.instance.addEventListener(_handleEvent);
|
| }
|
|
|
| + @override
|
| void didUnmount() {
|
| super.didUnmount();
|
| SkyBinding.instance.removeEventListener(_handleEvent);
|
| }
|
|
|
| + @override
|
| void syncFields(Component source) { }
|
|
|
| // Override this to handle back button behavior in your app
|
| @@ -1059,11 +1096,13 @@ abstract class AbstractWidgetRoot extends StatefulComponent {
|
| _scheduleComponentForRender(this);
|
| }
|
|
|
| + @override
|
| void syncFields(AbstractWidgetRoot source) {
|
| assert(false);
|
| // if we get here, it implies that we have a parent
|
| }
|
|
|
| + @override
|
| void _buildIfDirty() {
|
| assert(_dirty);
|
| assert(_mounted);
|
| @@ -1075,7 +1114,11 @@ abstract class AbstractWidgetRoot extends StatefulComponent {
|
|
|
| class RenderViewWrapper extends OneChildRenderObjectWrapper {
|
| RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child);
|
| +
|
| + @override
|
| RenderView get root => super.root;
|
| +
|
| + @override
|
| RenderView createNode() => SkyBinding.instance.renderView;
|
| }
|
|
|
| @@ -1084,6 +1127,8 @@ class AppContainer extends AbstractWidgetRoot {
|
| assert(SkyBinding.instance is WidgetSkyBinding);
|
| }
|
| final App app;
|
| +
|
| + @override
|
| Widget build() => new RenderViewWrapper(child: app);
|
| }
|
|
|
| @@ -1125,6 +1170,7 @@ class RenderBoxToWidgetAdapter extends AbstractWidgetRoot {
|
|
|
| final Builder builder;
|
|
|
| + @override
|
| void _buildIfDirty() {
|
| super._buildIfDirty();
|
| if (root.parent == null) {
|
| @@ -1135,5 +1181,6 @@ class RenderBoxToWidgetAdapter extends AbstractWidgetRoot {
|
| assert(root.parent == _container);
|
| }
|
|
|
| + @override
|
| Widget build() => builder();
|
| }
|
|
|