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