2022-09-10 12:11:11 +02:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
2023-01-03 18:29:03 +01:00
|
|
|
import 'package:fluffychat/config/app_config.dart';
|
|
|
|
|
2022-09-10 12:11:11 +02:00
|
|
|
class M2PopupMenuButton<T> extends StatelessWidget {
|
|
|
|
final List<PopupMenuEntry<T>> Function(BuildContext) itemBuilder;
|
|
|
|
final T? initialValue;
|
|
|
|
final void Function(T)? onSelected;
|
|
|
|
final void Function()? onCanceled;
|
|
|
|
final Widget? icon;
|
|
|
|
final Color? color;
|
|
|
|
final Widget? child;
|
|
|
|
|
|
|
|
const M2PopupMenuButton({
|
|
|
|
Key? key,
|
|
|
|
required this.itemBuilder,
|
|
|
|
this.initialValue,
|
|
|
|
this.onSelected,
|
|
|
|
this.onCanceled,
|
|
|
|
this.icon,
|
|
|
|
this.color,
|
|
|
|
this.child,
|
|
|
|
}) : super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
final theme = Theme.of(context);
|
|
|
|
return Theme(
|
|
|
|
data: theme.copyWith(
|
|
|
|
useMaterial3: false,
|
|
|
|
popupMenuTheme: PopupMenuThemeData(
|
|
|
|
color: theme.colorScheme.surface,
|
2023-01-03 18:29:03 +01:00
|
|
|
shape: RoundedRectangleBorder(
|
|
|
|
borderRadius: BorderRadius.circular(AppConfig.borderRadius),
|
|
|
|
),
|
2022-09-10 12:11:11 +02:00
|
|
|
elevation: theme.appBarTheme.scrolledUnderElevation,
|
2023-01-26 09:47:30 +01:00
|
|
|
textStyle: theme.textTheme.bodyLarge,
|
2022-09-10 12:11:11 +02:00
|
|
|
),
|
|
|
|
),
|
|
|
|
child: PopupMenuButton<T>(
|
|
|
|
itemBuilder: itemBuilder,
|
|
|
|
initialValue: initialValue,
|
|
|
|
onSelected: onSelected,
|
|
|
|
onCanceled: onCanceled,
|
|
|
|
icon: icon,
|
|
|
|
color: color,
|
|
|
|
child: child,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|