diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 08b77bf..f9aece2 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,5 +1,6 @@ // Flutter import 'package:flutter/material.dart'; +import 'dart:io'; // Local import '/pages/expense.dart'; @@ -67,51 +68,71 @@ class _HomePageState extends State { ); } + Widget navigation = NavigationRail( + extended: true, + destinations: [ + NavigationRailDestination( + icon: Icon(Icons.payment), + label: Text('Expenses'), + ), + NavigationRailDestination( + icon: Icon(Icons.account_balance), + label: Text('Income'), + ), + NavigationRailDestination( + icon: Icon(Icons.attach_money), + label: Text('Liquid Assets'), + ), + NavigationRailDestination( + icon: Icon(Icons.bar_chart), + label: Text('Reports'), + ), + NavigationRailDestination( + icon: Icon(Icons.settings), + label: Text('Settings'), + ), + NavigationRailDestination( + icon: Icon(Icons.help), + label: Text('Help'), + ), + ], + selectedIndex: pageSelected, + onDestinationSelected: (value) { + setState(() { + pageSelected = value; + if (Platform.isAndroid || Platform.isIOS) { + Navigator.pop(context); + } + }); + }, + ); + + Widget main = Container( + color: Theme.of(context).colorScheme.primaryContainer, + child: Center(child: page), + ); + + Widget? drawer, body; + if (Platform.isAndroid || Platform.isIOS) { + drawer = navigation; + body = main; + } else { + drawer = null; + body = Row( + children: [ + SafeArea(child: navigation), + Expanded(child: main), + ], + ); + } + return LayoutBuilder(builder: (context, constraints) { return Scaffold( appBar: AppBar( title: Text("Expense Tracker"), ), - drawer: NavigationRail( - extended: true, - destinations: [ - NavigationRailDestination( - icon: Icon(Icons.payment), - label: Text('Expenses'), - ), - NavigationRailDestination( - icon: Icon(Icons.account_balance), - label: Text('Income'), - ), - NavigationRailDestination( - icon: Icon(Icons.attach_money), - label: Text('Liquid Assets'), - ), - NavigationRailDestination( - icon: Icon(Icons.bar_chart), - label: Text('Reports'), - ), - NavigationRailDestination( - icon: Icon(Icons.settings), - label: Text('Settings'), - ), - NavigationRailDestination( - icon: Icon(Icons.help), - label: Text('Help'), - ), - ], - selectedIndex: pageSelected, - onDestinationSelected: (value) { - setState(() { - pageSelected = value; - Navigator.pop(context); - }); - }, - ), - body: Container( - color: Theme.of(context).colorScheme.primaryContainer, - child: Center(child: page), - ), + drawer: drawer, + body: body, floatingActionButton: floatingButton, ); });