Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: sky/sdk/lib/widgets/scaffold.dart

Issue 1218183009: When syncing a child, we have to update the parent in all cases. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/sdk/example/widgets/sector.dart ('k') | sky/sdk/lib/widgets/widget.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/sdk/lib/widgets/scaffold.dart
diff --git a/sky/sdk/lib/widgets/scaffold.dart b/sky/sdk/lib/widgets/scaffold.dart
index 3f8ab015fb916b643bc27af4247df32619b03fcd..3a50fab54f02fa0b8dd084dbf36604e918e1b955 100644
--- a/sky/sdk/lib/widgets/scaffold.dart
+++ b/sky/sdk/lib/widgets/scaffold.dart
@@ -181,19 +181,15 @@ class Scaffold extends RenderObjectWrapper {
Widget floatingActionButton,
Widget drawer
}) : super(key: key) {
- this[ScaffoldSlots.body] = body;
- this[ScaffoldSlots.statusBar] = statusBar;
- this[ScaffoldSlots.toolbar] = toolbar;
- this[ScaffoldSlots.snackBar] = snackBar;
- this[ScaffoldSlots.floatingActionButton] = floatingActionButton;
- this[ScaffoldSlots.drawer] = drawer;
+ _slots[ScaffoldSlots.body] = body;
+ _slots[ScaffoldSlots.statusBar] = statusBar;
+ _slots[ScaffoldSlots.toolbar] = toolbar;
+ _slots[ScaffoldSlots.snackBar] = snackBar;
+ _slots[ScaffoldSlots.floatingActionButton] = floatingActionButton;
+ _slots[ScaffoldSlots.drawer] = drawer;
}
Map<ScaffoldSlots, Widget> _slots = new Map<ScaffoldSlots, Widget>();
- Widget operator[] (ScaffoldSlots slot) => _slots[slot];
- void operator[]= (ScaffoldSlots slot, Widget value) {
- _slots[slot] = value;
- }
RenderScaffold get root => super.root;
RenderScaffold createNode() => new RenderScaffold();
@@ -226,8 +222,10 @@ class Scaffold extends RenderObjectWrapper {
void syncRenderObject(Widget old) {
super.syncRenderObject(old);
for (ScaffoldSlots slot in ScaffoldSlots.values) {
- Widget widget = this[slot];
- this[slot] = syncChild(widget, old is Scaffold ? old[slot] : null, slot);
+ Widget widget = _slots[slot];
+ _slots[slot] = syncChild(widget, old is Scaffold ? old._slots[slot] : null, slot);
+ assert((_slots[slot] == null) == (widget == null));
+ assert(_slots[slot] == null || _slots[slot].parent == this);
}
}
« no previous file with comments | « sky/sdk/example/widgets/sector.dart ('k') | sky/sdk/lib/widgets/widget.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698