buildView method
Widget
buildView(
- BuildContext context,
- DetailsUIState state,
- 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'),
],
),
],
),
),
),
);
}