build method
dynamic
build( - dynamic context,
- dynamic ref
)
Implementation
@override
Widget build(BuildContext context, WidgetRef ref) {
final features = ref.watch(featuresProvider);
bool isActive(f) => features.isActive(f);
final canPostNewsLoader = ref.watch(
hasSpaceWithPermissionProvider('CanPostNews'),
);
final canPostNews = canPostNewsLoader.valueOrNull ?? false;
final canPostPinLoader = ref.watch(
hasSpaceWithPermissionProvider('CanPostPin'),
);
final canPostPin = canPostPinLoader.valueOrNull ?? false;
final canPostEventLoader = ref.watch(
hasSpaceWithPermissionProvider('CanPostEvent'),
);
final canPostEvent = canPostEventLoader.valueOrNull ?? false;
final canPostTasklistLoader = ref.watch(
hasSpaceWithPermissionProvider('CanPostTaskList'),
);
final canPostTasklist = canPostTasklistLoader.valueOrNull ?? false;
return Wrap(
alignment: WrapAlignment.spaceEvenly,
spacing: 8,
runSpacing: 10,
children: List.from(
[
if (canPostNews)
OutlinedButton.icon(
key: QuickJumpKeys.createUpdateAction,
onPressed: () => routeTo(context, Routes.actionAddUpdate),
icon: const Icon(
Atlas.plus_circle_thin,
size: 18,
),
label: Text(
L10n.of(context).update,
style: Theme.of(context).textTheme.labelMedium,
),
),
if (canPostPin)
OutlinedButton.icon(
key: QuickJumpKeys.createPinAction,
onPressed: () => routeTo(context, Routes.createPin),
icon: const Icon(
Atlas.plus_circle_thin,
size: 18,
),
label: Text(
L10n.of(context).pin,
style: Theme.of(context).textTheme.labelMedium,
),
),
if (canPostEvent)
OutlinedButton.icon(
key: QuickJumpKeys.createEventAction,
onPressed: () => routeTo(context, Routes.createEvent),
icon: const Icon(Atlas.plus_circle_thin, size: 18),
label: Text(
L10n.of(context).event,
style: Theme.of(context).textTheme.labelMedium,
),
),
if (canPostTasklist)
OutlinedButton.icon(
key: QuickJumpKeys.createTaskListAction,
onPressed: () => showCreateUpdateTaskListBottomSheet(context),
icon: const Icon(Atlas.plus_circle_thin, size: 18),
label: Text(
L10n.of(context).taskList,
style: Theme.of(context).textTheme.labelMedium,
),
),
if (isActive(LabsFeature.polls))
OutlinedButton.icon(
onPressed: () {
_log.info('poll pressed');
},
icon: const Icon(Atlas.plus_circle_thin, size: 18),
label: Text(
L10n.of(context).poll,
style: Theme.of(context).textTheme.labelMedium,
),
),
if (isActive(LabsFeature.discussions))
OutlinedButton.icon(
onPressed: () {
_log.info('Discussion pressed');
},
icon: const Icon(
Atlas.plus_circle_thin,
size: 18,
),
label: Text(
L10n.of(context).discussion,
style: Theme.of(context).textTheme.labelMedium,
),
),
OutlinedButton.icon(
icon: const Icon(Atlas.connection),
key: SpacesKeys.actionCreate,
onPressed: () => routeTo(context, Routes.createSpace),
label: Text(L10n.of(context).createSpace),
),
if (isBugReportingEnabled)
OutlinedButton.icon(
key: QuickJumpKeys.bugReport,
style: OutlinedButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.textHighlight,
side: BorderSide(
width: 1,
color: Theme.of(context).colorScheme.textHighlight,
),
),
icon: const Icon(Atlas.bug_clipboard_thin, size: 18),
label: Text(
L10n.of(context).reportBug,
style: Theme.of(context).textTheme.labelMedium,
),
onPressed: () async {
if (popBeforeRoute) {
Navigator.pop(context);
}
await openBugReport(context);
},
),
],
),
);
}