Skip to content

Commit 5b10f99

Browse files
committed
app: Update three-dots button to use new M3 MenuAnchor widget
Greg spotted this opportunity to be a bit more modern: zulip#1010 (comment)
1 parent ef87fe4 commit 5b10f99

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

lib/widgets/app.dart

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -275,24 +275,32 @@ class ChooseAccountPage extends StatelessWidget {
275275
}
276276
}
277277

278-
enum ChooseAccountPageOverflowMenuItem { aboutZulip }
279-
280278
class ChooseAccountPageOverflowButton extends StatelessWidget {
281279
const ChooseAccountPageOverflowButton({super.key});
282280

283281
@override
284282
Widget build(BuildContext context) {
285-
return PopupMenuButton<ChooseAccountPageOverflowMenuItem>(
286-
itemBuilder: (BuildContext context) => const [
287-
PopupMenuItem(
288-
value: ChooseAccountPageOverflowMenuItem.aboutZulip,
289-
child: Text('About Zulip')),
290-
],
291-
onSelected: (item) {
292-
switch (item) {
293-
case ChooseAccountPageOverflowMenuItem.aboutZulip:
283+
final designVariables = DesignVariables.of(context);
284+
final materialLocalizations = MaterialLocalizations.of(context);
285+
return MenuAnchor(
286+
menuChildren: [
287+
MenuItemButton(
288+
onPressed: () {
294289
Navigator.push(context, AboutZulipPage.buildRoute(context));
295-
}
290+
},
291+
child: const Text('About Zulip')), // TODO(i18n)
292+
],
293+
builder: (BuildContext context, MenuController controller, Widget? child) {
294+
return IconButton(
295+
tooltip: materialLocalizations.showMenuTooltip, // "Show menu"
296+
onPressed: () {
297+
if (controller.isOpen) {
298+
controller.close();
299+
} else {
300+
controller.open();
301+
}
302+
},
303+
icon: Icon(Icons.adaptive.more, color: designVariables.icon));
296304
});
297305
}
298306
}

0 commit comments

Comments
 (0)