diff --git a/lib/main.dart b/lib/main.dart index 4d9c3f9..66bb589 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import 'pages/create_recipe_page.dart'; import 'pages/overview_page.dart'; void main() { @@ -22,6 +23,7 @@ class RecipeJournal extends StatelessWidget { ), routes: { OverviewPage.routeName: (context) => OverviewPage(), + CreateRecipePage.routeName: (context) => CreateRecipePage(), }, initialRoute: OverviewPage.routeName, ); diff --git a/lib/pages/create_recipe_page.dart b/lib/pages/create_recipe_page.dart new file mode 100644 index 0000000..af1b9d4 --- /dev/null +++ b/lib/pages/create_recipe_page.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; + +import 'create_recipe_pages/ingredients_page.dart'; +import 'create_recipe_pages/metadata_page.dart'; +import 'create_recipe_pages/steps_page.dart'; + +class CreateRecipePage extends StatefulWidget { + const CreateRecipePage({super.key}); + + static const String routeName = '/create'; + + @override + State createState() => _CreateRecipePageState(); +} + +class _CreateRecipePageState extends State { + int _currentPageIndex = 0; + final List _pages = [ + const MetadataPage(), + const IngredientsPage(), + const StepsPage(), + ]; + + final List _destinations = [ + NavigationDestination( + icon: Icon(Icons.list), + label: 'Metadata', + ), + NavigationDestination( + icon: Icon(Icons.emoji_food_beverage), + label: 'Ingredients', + ), + NavigationDestination( + icon: Icon(Icons.format_list_numbered_outlined), + label: 'Steps', + ), + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + bottomNavigationBar: NavigationBar( + destinations: _destinations, + selectedIndex: _currentPageIndex, + onDestinationSelected: (value) => setState(() { + _currentPageIndex = value; + }), + ), + body: _pages.elementAt(_currentPageIndex), + ); + } +} diff --git a/lib/pages/create_recipe_pages/ingredients_page.dart b/lib/pages/create_recipe_pages/ingredients_page.dart new file mode 100644 index 0000000..26b8fa7 --- /dev/null +++ b/lib/pages/create_recipe_pages/ingredients_page.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; + +class IngredientsPage extends StatelessWidget { + const IngredientsPage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: const Text('Ingredients')); + } +} diff --git a/lib/pages/create_recipe_pages/metadata_page.dart b/lib/pages/create_recipe_pages/metadata_page.dart new file mode 100644 index 0000000..1615414 --- /dev/null +++ b/lib/pages/create_recipe_pages/metadata_page.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +class MetadataPage extends StatelessWidget { + const MetadataPage({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text('Metadata'), + ); + } +} diff --git a/lib/pages/create_recipe_pages/steps_page.dart b/lib/pages/create_recipe_pages/steps_page.dart new file mode 100644 index 0000000..9e344a3 --- /dev/null +++ b/lib/pages/create_recipe_pages/steps_page.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; + +class StepsPage extends StatelessWidget { + const StepsPage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: const Text('Steps')); + } +} diff --git a/lib/pages/overview_page.dart b/lib/pages/overview_page.dart index 5b6956f..f20ae3b 100644 --- a/lib/pages/overview_page.dart +++ b/lib/pages/overview_page.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'create_recipe_page.dart'; + class OverviewPage extends StatelessWidget { const OverviewPage({super.key}); static const String routeName = '/'; @@ -11,7 +13,8 @@ class OverviewPage extends StatelessWidget { title: Text('Recipe Journal'), ), floatingActionButton: FloatingActionButton.extended( - onPressed: () {}, + onPressed: () => + Navigator.pushNamed(context, CreateRecipePage.routeName), label: Text('Create New'), ), );