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,
) {
  // Initial load should be handled by the Notifier or a parent action
  // to strictly adhere to the "no hooks in view" rule.

  return Scaffold(
    appBar: AppBar(
      title: const AppText.large('Todo Details'),
    ),
    body: () {
      switch (state.status) {
        case DetailsUIStatus.initial:
        case DetailsUIStatus.loading:
          return const Center(child: CircularProgressIndicator());
        case DetailsUIStatus.error:
          return Center(child: AppText.medium('Error: ${state.errorMessage}'));
        case DetailsUIStatus.success:
          final todo = state.todo!;
          return 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'),
                  ],
                ),
              ],
            ),
          );
      }
    }(),
  );
}