From 0d4ad47ab8f13fa5cf5ec2c487a005a7cb25a904 Mon Sep 17 00:00:00 2001 From: Kirollos Nayrouz Date: Sat, 1 Jul 2023 12:04:26 +0300 Subject: [PATCH] feat(mobile): added MobileDashboard widget with Drawer config Created new dynamic MobileDashboard widget with basic home, requests and settigns navigations within the side drawer --- lib/widgets/mobile_dashboard.dart | 83 +++++++++++++++++++++++++++++++ lib/widgets/widgets.dart | 1 + 2 files changed, 84 insertions(+) create mode 100644 lib/widgets/mobile_dashboard.dart diff --git a/lib/widgets/mobile_dashboard.dart b/lib/widgets/mobile_dashboard.dart new file mode 100644 index 00000000..8a2e49a6 --- /dev/null +++ b/lib/widgets/mobile_dashboard.dart @@ -0,0 +1,83 @@ +import 'package:apidash/screens/home_page/collection_pane.dart'; +import 'package:apidash/screens/intro_page.dart'; +import 'package:apidash/screens/settings_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +class MobileDashboard extends ConsumerStatefulWidget { + const MobileDashboard( + {required this.scaffoldBody, required this.title, super.key}); + + final Widget scaffoldBody; + final String title; + + @override + ConsumerState createState() => _MobileDashboardState(); +} + +class _MobileDashboardState extends ConsumerState { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + drawer: Drawer( + child: ListView( + padding: EdgeInsets.zero, + children: [ + const SizedBox( + height: 70, + ), + ListTile( + title: const Text('Home'), + leading: const Icon(Icons.home_outlined), + onTap: () { + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (context) => const MobileDashboard( + title: 'Home', + scaffoldBody: IntroPage(), + ), + ), + (Route route) => false); + }, + ), + ListTile( + title: const Text('Requests'), + leading: const Icon(Icons.auto_awesome_mosaic_outlined), + onTap: () { + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (context) => const MobileDashboard( + title: 'Requests', + scaffoldBody: CollectionPane(), + ), + ), + (Route route) => false); + }, + ), + ListTile( + title: const Text('Settings'), + leading: const Icon(Icons.settings_outlined), + onTap: () { + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (context) => const MobileDashboard( + title: 'Settings', + scaffoldBody: SettingsPage(), + ), + ), + (Route route) => false); + }, + ), + const Divider(), + ], + ), + ), + body: SafeArea( + child: widget.scaffoldBody, + ), + ); + } +} diff --git a/lib/widgets/widgets.dart b/lib/widgets/widgets.dart index b259e7bf..6b54c386 100644 --- a/lib/widgets/widgets.dart +++ b/lib/widgets/widgets.dart @@ -17,3 +17,4 @@ export 'response_widgets.dart'; export 'snackbars.dart'; export 'markdown.dart'; export 'uint8_audio_player.dart'; +export 'mobile_dashboard.dart';