Skip to content

Commit e3830d8

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 33c365a commit e3830d8

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
@@ -264,24 +264,32 @@ class ChooseAccountPage extends StatelessWidget {
264264
}
265265
}
266266

267-
enum ChooseAccountPageOverflowMenuItem { aboutZulip }
268-
269267
class ChooseAccountPageOverflowButton extends StatelessWidget {
270268
const ChooseAccountPageOverflowButton({super.key});
271269

272270
@override
273271
Widget build(BuildContext context) {
274-
return PopupMenuButton<ChooseAccountPageOverflowMenuItem>(
275-
itemBuilder: (BuildContext context) => const [
276-
PopupMenuItem(
277-
value: ChooseAccountPageOverflowMenuItem.aboutZulip,
278-
child: Text('About Zulip')),
279-
],
280-
onSelected: (item) {
281-
switch (item) {
282-
case ChooseAccountPageOverflowMenuItem.aboutZulip:
272+
final designVariables = DesignVariables.of(context);
273+
final materialLocalizations = MaterialLocalizations.of(context);
274+
return MenuAnchor(
275+
menuChildren: [
276+
MenuItemButton(
277+
onPressed: () {
283278
Navigator.push(context, AboutZulipPage.buildRoute(context));
284-
}
279+
},
280+
child: const Text('About Zulip')), // TODO(i18n)
281+
],
282+
builder: (BuildContext context, MenuController controller, Widget? child) {
283+
return IconButton(
284+
tooltip: materialLocalizations.showMenuTooltip, // "Show menu"
285+
onPressed: () {
286+
if (controller.isOpen) {
287+
controller.close();
288+
} else {
289+
controller.open();
290+
}
291+
},
292+
icon: Icon(Icons.adaptive.more, color: designVariables.icon));
285293
});
286294
}
287295
}

0 commit comments

Comments
 (0)