Код: Выделить всё
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