Skip to content

Commit

Permalink
app: Update three-dots button to use new M3 MenuAnchor widget
Browse files Browse the repository at this point in the history
Greg spotted this opportunity to be a bit more modern:
  zulip#1010 (comment)
  • Loading branch information
chrisbobbe committed Nov 13, 2024
1 parent 11e90a0 commit c8cd390
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions lib/widgets/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -275,24 +275,32 @@ class ChooseAccountPage extends StatelessWidget {
}
}

enum ChooseAccountPageOverflowMenuItem { aboutZulip }

class ChooseAccountPageOverflowButton extends StatelessWidget {
const ChooseAccountPageOverflowButton({super.key});

@override
Widget build(BuildContext context) {
return PopupMenuButton<ChooseAccountPageOverflowMenuItem>(
itemBuilder: (BuildContext context) => const [
PopupMenuItem(
value: ChooseAccountPageOverflowMenuItem.aboutZulip,
child: Text('About Zulip')),
],
onSelected: (item) {
switch (item) {
case ChooseAccountPageOverflowMenuItem.aboutZulip:
final designVariables = DesignVariables.of(context);
final materialLocalizations = MaterialLocalizations.of(context);
return MenuAnchor(
menuChildren: [
MenuItemButton(
onPressed: () {
Navigator.push(context, AboutZulipPage.buildRoute(context));
}
},
child: const Text('About Zulip')), // TODO(i18n)
],
builder: (BuildContext context, MenuController controller, Widget? child) {
return IconButton(
tooltip: materialLocalizations.showMenuTooltip, // "Show menu"
onPressed: () {
if (controller.isOpen) {
controller.close();
} else {
controller.open();
}
},
icon: Icon(Icons.adaptive.more, color: designVariables.icon));
});
}
}
Expand Down

0 comments on commit c8cd390

Please sign in to comment.