From 951c50c2a983cef1425842090004bca3aaa8b744 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Mon, 30 Sep 2019 16:28:55 +0800 Subject: [PATCH] feat: use popup menu button for material --- lib/widgets/action.dart | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/widgets/action.dart b/lib/widgets/action.dart index f69d120..1bb9d95 100644 --- a/lib/widgets/action.dart +++ b/lib/widgets/action.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:git_touch/utils/utils.dart'; -import 'package:git_touch/widgets/action_entry.dart'; import 'package:provider/provider.dart'; import 'package:git_touch/models/theme.dart'; import 'package:share/share.dart'; @@ -9,8 +8,14 @@ import 'package:share/share.dart'; class ActionItem { String text; void Function() onPress; + IconData iconData; + + ActionItem({ + @required this.text, + @required this.onPress, + this.iconData, + }); - ActionItem({@required this.text, @required this.onPress}); ActionItem.share(String url) : text = 'Share', onPress = (() { @@ -38,9 +43,8 @@ class ActionButton extends StatelessWidget { Widget build(BuildContext context) { switch (Provider.of(context).theme) { case AppThemeType.cupertino: - default: - return ActionEntry( - iconData: iconData, + return GestureDetector( + child: Icon(iconData, size: 22), onTap: () async { var value = await showCupertinoModalPopup( context: context, @@ -71,6 +75,21 @@ class ActionButton extends StatelessWidget { } }, ); + default: + return PopupMenuButton( + icon: Icon(iconData), + itemBuilder: (context) { + return items.asMap().entries.map((entry) { + return PopupMenuItem( + value: entry.key, + child: Text(entry.value.text), + ); + }).toList(); + }, + onSelected: (selected) { + items[selected].onPress(); + }, + ); } } }