Anonymous
Как поддержать темную/светлую тему для виджета CupertinoContextMenu?
Сообщение
Anonymous » 24 июн 2024, 18:17
У меня есть список элементов с контекстным меню Купертино:
Код: Выделить всё
class ListItemWithCupertinoMenu extends StatelessWidget {
final Widget widget;
final Widget? preview;
final List actions;
final SelectedItemCallback selectedCallback;
final double? listTileHeight;
const ListItemWithCupertinoMenu(this.widget, this.actions, {this.preview, required this.selectedCallback, this.listTileHeight});
@override
Widget build(BuildContext context) {
var cupertinoActions = [];
for (final item in actions) {
cupertinoActions.add(
CupertinoContextMenuAction(
child: Semantics(
label: item.label,
child: Text(
item.label,
textAlign: TextAlign.left,
),
),
key: Key(item.label),
trailingIcon: item.icon,
isDestructiveAction: item.isDestructiveAction,
onPressed: () {
Navigator.of(context);
selectedCallback(item.value);
},
),
);
}
if (cupertinoActions.isEmpty) {
return widget;
}
return CupertinoContextMenu.builder(
actions: cupertinoActions,
builder: (context, animation) {
if (preview != null && animation.value > CupertinoContextMenu.animationOpensAt) {
if (listTileHeight != null) {
return Material(
color: Colors.transparent,
child: Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
height: listTileHeight!,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(16)),
),
padding: const EdgeInsets.symmetric(horizontal: 16),
child: preview,
),
);
}
return preview!;
}
return widget;
});
}
}
Это меню выглядит светлым, даже если у меня установлена темная тема.
Как я могу поддержать темную тему для виджета CupertinoContextMenu во Flutter? Есть ли какой-нибудь простой способ сделать это или флаттер еще не поддерживает это?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... enu-widget
1719242243
Anonymous
У меня есть список элементов с контекстным меню Купертино: [code]class ListItemWithCupertinoMenu extends StatelessWidget { final Widget widget; final Widget? preview; final List actions; final SelectedItemCallback selectedCallback; final double? listTileHeight; const ListItemWithCupertinoMenu(this.widget, this.actions, {this.preview, required this.selectedCallback, this.listTileHeight}); @override Widget build(BuildContext context) { var cupertinoActions = []; for (final item in actions) { cupertinoActions.add( CupertinoContextMenuAction( child: Semantics( label: item.label, child: Text( item.label, textAlign: TextAlign.left, ), ), key: Key(item.label), trailingIcon: item.icon, isDestructiveAction: item.isDestructiveAction, onPressed: () { Navigator.of(context); selectedCallback(item.value); }, ), ); } if (cupertinoActions.isEmpty) { return widget; } return CupertinoContextMenu.builder( actions: cupertinoActions, builder: (context, animation) { if (preview != null && animation.value > CupertinoContextMenu.animationOpensAt) { if (listTileHeight != null) { return Material( color: Colors.transparent, child: Container( margin: const EdgeInsets.symmetric(horizontal: 16), height: listTileHeight!, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(16)), ), padding: const EdgeInsets.symmetric(horizontal: 16), child: preview, ), ); } return preview!; } return widget; }); } } [/code] Это меню выглядит светлым, даже если у меня установлена темная тема. Как я могу поддержать темную тему для виджета CupertinoContextMenu во Flutter? Есть ли какой-нибудь простой способ сделать это или флаттер еще не поддерживает это? Подробнее здесь: [url]https://stackoverflow.com/questions/78663335/how-to-support-dark-light-theme-for-cupertinocontextmenu-widget[/url]