From f86a878a9cab59331a401a2d460bfd31203f30f6 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Tue, 3 Dec 2019 22:35:23 +0100 Subject: [PATCH] Split AppBar Menu button into its own widget Saves us the need to the GlobalKey as well. --- lib/screens/journal_listing.dart | 18 ++---------------- lib/widgets/app_bar_menu_button.dart | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 lib/widgets/app_bar_menu_button.dart diff --git a/lib/screens/journal_listing.dart b/lib/screens/journal_listing.dart index 69caf9f9..4648f418 100644 --- a/lib/screens/journal_listing.dart +++ b/lib/screens/journal_listing.dart @@ -1,4 +1,3 @@ -import 'package:badges/badges.dart'; import 'package:flutter/material.dart'; import 'package:gitjournal/note.dart'; import 'package:gitjournal/utils.dart'; @@ -7,11 +6,11 @@ import 'package:gitjournal/screens/journal_editor.dart'; import 'package:gitjournal/screens/journal_browsing.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/widgets/app_drawer.dart'; +import 'package:gitjournal/widgets/app_bar_menu_button.dart'; import 'package:gitjournal/widgets/journal_list.dart'; import 'package:gitjournal/themes.dart'; class JournalListingScreen extends StatelessWidget { - final GlobalKey _scaffoldKey = GlobalKey(); final List allNotes; JournalListingScreen(this.allNotes); @@ -19,7 +18,6 @@ class JournalListingScreen extends StatelessWidget { @override Widget build(BuildContext context) { final container = StateContainer.of(context); - final appState = container.appState; var createButton = FloatingActionButton( key: const ValueKey("FAB"), @@ -41,22 +39,10 @@ class JournalListingScreen extends StatelessWidget { emptyText: "Why not add your first\n Journal Entry?", ); - bool shouldShowBadge = - !appState.remoteGitRepoConfigured && appState.hasJournalEntries; - var appBarMenuButton = BadgeIconButton( - key: const ValueKey("DrawerButton"), - icon: const Icon(Icons.menu), - itemCount: shouldShowBadge ? 1 : 0, - onPressed: () { - _scaffoldKey.currentState.openDrawer(); - }, - ); - return Scaffold( - key: _scaffoldKey, appBar: AppBar( title: const Text('GitJournal'), - leading: appBarMenuButton, + leading: GJAppBarMenuButton(), actions: [ IconButton( icon: Icon(Icons.search), diff --git a/lib/widgets/app_bar_menu_button.dart b/lib/widgets/app_bar_menu_button.dart new file mode 100644 index 00000000..d6362773 --- /dev/null +++ b/lib/widgets/app_bar_menu_button.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:badges/badges.dart'; + +import 'package:gitjournal/state_container.dart'; + +class GJAppBarMenuButton extends StatelessWidget { + @override + Widget build(BuildContext context) { + final container = StateContainer.of(context); + final appState = container.appState; + + bool shouldShowBadge = + !appState.remoteGitRepoConfigured && appState.hasJournalEntries; + var appBarMenuButton = BadgeIconButton( + key: const ValueKey("DrawerButton"), + icon: const Icon(Icons.menu), + itemCount: shouldShowBadge ? 1 : 0, + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + + return appBarMenuButton; + } +}