From ad9c3375e4de55c79d981b76a2d27016a9e5bd04 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Fri, 24 Jul 2015 15:16:40 -0700 Subject: [PATCH] Move dialog into its own class --- sky/sdk/example/fitness/lib/feed.dart | 79 ++++++++++++++------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/sky/sdk/example/fitness/lib/feed.dart b/sky/sdk/example/fitness/lib/feed.dart index 5d0bb543057..a9e8213c260 100644 --- a/sky/sdk/example/fitness/lib/feed.dart +++ b/sky/sdk/example/fitness/lib/feed.dart @@ -213,7 +213,46 @@ class FeedFragment extends StatefulComponent { ); } - bool _isShowingDialog = false; + void _handleActionButtonPressed() { + setState(() { + navigator.push(new DialogRoute(builder: (navigator, route) { + return new AddItemDialog(navigator); + })); + }); + } + + Widget buildFloatingActionButton() { + switch (_fitnessMode) { + case FitnessMode.feed: + return new FloatingActionButton( + child: new Icon(type: 'content/add', size: 24), + onPressed: _handleActionButtonPressed + ); + case FitnessMode.chart: + return null; + } + } + + Widget build() { + return new Scaffold( + toolbar: buildToolBar(), + body: buildBody(), + snackBar: buildSnackBar(), + floatingActionButton: buildFloatingActionButton(), + drawer: buildDrawer() + ); + } +} + +class AddItemDialog extends StatefulComponent { + AddItemDialog(this.navigator); + + Navigator navigator; + + void syncFields(AddItemDialog source) { + this.navigator = source.navigator; + } + String _addItemRoute; void _handleAddItemRouteChanged(String routeName) { @@ -222,7 +261,7 @@ class FeedFragment extends StatefulComponent { }); } - Widget buildDialog() { + Widget build() { // TODO(jackson): Internationalize Map labels = { '/meals/new': 'Eat', @@ -254,40 +293,4 @@ class FeedFragment extends StatefulComponent { ] ); } - - void _handleActionButtonPressed() { - setState(() { - _isShowingDialog = true; - navigator.pushState(this, (_) { - _isShowingDialog = false; - }); - }); - } - - Widget buildFloatingActionButton() { - switch (_fitnessMode) { - case FitnessMode.feed: - return new FloatingActionButton( - child: new Icon(type: 'content/add', size: 24), - onPressed: _handleActionButtonPressed - ); - case FitnessMode.chart: - return null; - } - } - - Widget build() { - List layers = [ - new Scaffold( - toolbar: buildToolBar(), - body: buildBody(), - snackBar: buildSnackBar(), - floatingActionButton: buildFloatingActionButton(), - drawer: buildDrawer() - ) - ]; - if (_isShowingDialog) - layers.add(buildDialog()); - return new Stack(layers); - } }