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

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

Issue 1184823006: Settings menu item in stock2 doesn't work (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 6 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
Index: sky/sdk/lib/widgets/widget.dart
diff --git a/sky/sdk/lib/widgets/widget.dart b/sky/sdk/lib/widgets/widget.dart
index 7d450c98b11bdc330f7d7a1c48fb41004364fb4f..ed2e9cb5d4c67d9fb5da3c50dc7617c4752f512d 100644
--- a/sky/sdk/lib/widgets/widget.dart
+++ b/sky/sdk/lib/widgets/widget.dart
@@ -23,7 +23,7 @@ abstract class Widget {
Widget({ String key }) {
_key = key != null ? key : runtimeType.toString();
- assert(this is AbstractWidgetRoot || _inRenderDirtyComponents); // you should not build the UI tree ahead of time, build it only during build()
+ assert(this is AbstractWidgetRoot || this is App || _inRenderDirtyComponents); // you should not build the UI tree ahead of time, build it only during build()
}
String _key;
@@ -474,7 +474,7 @@ abstract class RenderObjectWrapper extends Widget {
static RenderObjectWrapper _getMounted(RenderObject node) => _nodeMap[node];
void _sync(Widget old, dynamic slot) {
- assert(parent != null);
+ assert(parent != null || this is RenderViewWrapper);
Hixie 2015/06/17 19:21:25 This should never be called for RenderViewWrapper.
if (old == null) {
_root = createNode();
var ancestor = findAncestor(RenderObjectWrapper);
@@ -767,10 +767,12 @@ class WidgetAppView extends AppView {
}
+abstract class App extends Component {
+}
+
abstract class AbstractWidgetRoot extends Component {
- AbstractWidgetRoot({ RenderView renderViewOverride }) : super(stateful: true) {
- WidgetAppView.initWidgetAppView(renderViewOverride: renderViewOverride);
+ AbstractWidgetRoot() : super(stateful: true) {
_mounted = true;
_scheduleComponentForRender(this);
}
@@ -789,20 +791,21 @@ abstract class AbstractWidgetRoot extends Component {
}
-abstract class App extends AbstractWidgetRoot {
-
- App({ RenderView renderViewOverride }) : super(renderViewOverride: renderViewOverride);
-
- void _buildIfDirty() {
- super._buildIfDirty();
+class RenderViewWrapper extends OneChildRenderObjectWrapper {
+ RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child);
+ RenderView get root => super.root;
+ RenderView createNode() => WidgetAppView._appView.renderView;
+}
- if (root.parent == null) {
- // we haven't attached it yet
- WidgetAppView._appView.root = root;
- }
- assert(root.parent is RenderView);
- }
+class AppContainer extends AbstractWidgetRoot {
+ AppContainer(this.app);
+ final App app;
+ Widget build() => new RenderViewWrapper(child: app);
+}
+void runApp(App app, { RenderView renderViewOverride }) {
+ WidgetAppView.initWidgetAppView(renderViewOverride: renderViewOverride);
+ new AppContainer(app);
}
typedef Widget Builder();

Powered by Google App Engine
This is Rietveld 408576698