anchor.diff:      );
     }
   
  -  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) {
  
positive.code:     });
    }
  
    Widget buildDialog() {
      // TODO(jackson): Internationalize
      Map<String, String> labels = {
        '/meals/new': 'Eat',
  
negative.code:       ]
      );
    }
  }
  