55 lines
1.7 KiB
Dart
55 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:material_symbols_icons/material_symbols_icons.dart';
|
|
|
|
class ProposalsSection extends StatelessWidget {
|
|
const ProposalsSection({
|
|
super.key,
|
|
required this.proposals,
|
|
required this.onProposalAction,
|
|
});
|
|
|
|
final List<Map<String, String>> proposals;
|
|
final void Function(BuildContext, Map<String, String>) onProposalAction;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (proposals.isEmpty) {
|
|
return const SizedBox.shrink();
|
|
}
|
|
|
|
return Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Wrap(
|
|
spacing: 8,
|
|
runSpacing: 8,
|
|
children:
|
|
proposals.map((proposal) {
|
|
return ElevatedButton.icon(
|
|
onPressed: () => onProposalAction(context, proposal),
|
|
icon: Icon(switch (proposal['type']) {
|
|
'post_create' => Symbols.add,
|
|
_ => Symbols.lightbulb,
|
|
}, size: 16),
|
|
label: Text(switch (proposal['type']) {
|
|
'post_create' => 'Create Post',
|
|
_ => proposal['type'] ?? 'Action',
|
|
}),
|
|
style: ElevatedButton.styleFrom(
|
|
backgroundColor:
|
|
Theme.of(context).colorScheme.primaryContainer,
|
|
foregroundColor:
|
|
Theme.of(context).colorScheme.onPrimaryContainer,
|
|
padding: const EdgeInsets.symmetric(
|
|
horizontal: 12,
|
|
vertical: 8,
|
|
),
|
|
),
|
|
);
|
|
}).toList(),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|