buildView method

  1. @override
Widget buildView(
  1. BuildContext context,
  2. DetailsUIState state,
  3. DetailsUIStateNotifier notifier
)
override

Implementation

@override
Widget buildView(
  BuildContext context,
  DetailsUIState state,
  DetailsUIStateNotifier notifier,
) {
  final todoArg = ModalRoute.of(context)?.settings.arguments as Todo?;

  useEffect(() {
    if (todoArg != null) {
      Future<void>.microtask(() => notifier.loadTodo(todoArg.id));
    }
    return null;
  }, [todoArg?.id]);

  return Scaffold(
    appBar: AppBar(
      title: const AppText.large('Todo Details'),
    ),
    body: state.when(
      initial: () => const Center(child: CircularProgressIndicator()),
      loading: () => const Center(child: CircularProgressIndicator()),
      error: (message) => Center(child: AppText.medium('Error: $message')),
      success: (todo) => Padding(
        padding: const EdgeInsets.all(24.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            AppText.large(todo.title),
            const SizedBox(height: 8),
            AppText.medium(todo.description.isNotEmpty ? todo.description : 'No description provided.'),
            const Divider(height: 48),
            Row(
              children: [
                const AppText.medium('Status: '),
                Icon(
                  todo.isCompleted ? Icons.check_circle : Icons.pending,
                  color: todo.isCompleted ? Colors.green : Colors.orange,
                ),
                const SizedBox(width: 8),
                AppText.small(todo.isCompleted ? 'Completed' : 'Pending'),
              ],
            ),
          ],
        ),
      ),
    ),
  );
}