loading method
Show loading with a task
Implementation
Future<void> loading({
required String label,
required Function() task,
}) async {
final loadingTask = UiTask(label: label, action: task);
final preState = UiRouterState(
pageRoutes: state.value.pageRoutes,
dialogRoutes: state.value.dialogRoutes,
tasks: [...state.value.tasks, loadingTask],
);
state.value = preState;
// await task action
await loadingTask.action();
final postState = UiRouterState(
pageRoutes: state.value.pageRoutes,
dialogRoutes: state.value.dialogRoutes,
tasks: state.value.tasks..remove(loadingTask),
);
state.value = postState;
}