From 046e2b3a1cc6e54d795f649797728709aac60611 Mon Sep 17 00:00:00 2001 From: Frederik Feichtmeier Date: Fri, 16 Sep 2022 11:04:13 +0200 Subject: [PATCH] Add PopupMenuTheme and improve example (#208) * Add PopupMenuTheme and improve example --- example/lib/view/controls_view.dart | 19 ++++++++++++++++++- lib/src/themes/common_themes.dart | 23 ++++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/example/lib/view/controls_view.dart b/example/lib/view/controls_view.dart index d3f857691..605dd8293 100644 --- a/example/lib/view/controls_view.dart +++ b/example/lib/view/controls_view.dart @@ -179,7 +179,24 @@ class _ControlsViewState extends State ], ), ), - icon: const Icon(Icons.account_circle_rounded), + icon: const Text('Show Dialog'), + ), + ], + ), + Row( + children: [ + PopupMenuButton( + icon: const Text('Show Popup-menu'), + initialValue: 'Hello', + itemBuilder: (context) { + return [ + for (final string in ['a', 'b', 'c']) + PopupMenuItem( + value: string, + child: Text(string), + ) + ]; + }, ), ], ) diff --git a/lib/src/themes/common_themes.dart b/lib/src/themes/common_themes.dart index 1f53a7839..04587b0dc 100644 --- a/lib/src/themes/common_themes.dart +++ b/lib/src/themes/common_themes.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:yaru_colors/yaru_colors.dart'; import 'package:yaru/src/text/text_theme.dart'; import 'package:yaru/src/themes/constants.dart'; import 'package:yaru/src/themes/page_transitions.dart'; +import 'package:yaru_colors/yaru_colors.dart'; // AppBar @@ -287,6 +287,7 @@ ThemeData createYaruLightTheme({ inputDecorationTheme: inputDecorationTheme, toggleButtonsTheme: _toggleButtonsTheme, textSelectionTheme: _createTextSelectionTheme(colorScheme), + popupMenuTheme: _createPopupMenuThemeData(colorScheme, Brightness.light), ); } @@ -336,5 +337,25 @@ ThemeData createYaruDarkTheme({ inputDecorationTheme: inputDecorationTheme, toggleButtonsTheme: _toggleButtonsTheme, textSelectionTheme: _createTextSelectionTheme(colorScheme), + popupMenuTheme: _createPopupMenuThemeData(colorScheme, Brightness.dark), + ); +} + +PopupMenuThemeData _createPopupMenuThemeData( + ColorScheme colorScheme, + Brightness brightness, +) { + return PopupMenuThemeData( + color: brightness == Brightness.dark + ? const Color.fromARGB(255, 34, 34, 34) + : Colors.white, + shape: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide( + color: colorScheme.onSurface + .withOpacity(brightness == Brightness.light ? 0.3 : 0.2), + width: 1, + ), + ), ); }