build method
- BuildTrigger trigger
override
Recalculates the state of the repository.
This method is called when:
- The repository is first initialized.
- A repository watched via watch emits a new state.
- This repository is updated (if updateInterval is not Duration.zero).
Override this method to handle changes from said repositories.
Example:
class MyRepository extends Repository<MyState> {
final OtherRepository _otherRepository;
MyRepository(this._otherRepository) : super(MyState.new) {
watch(_otherRepository);
}
@override
FutureOr<void> build(BuildTrigger trigger) async {
if(trigger is InitialBuildTrigger) {
// Do something when the repository is first initialized
}
if(trigger is UpdateTrigger) {
// Do something when the repository is updated
}
if(trigger is OtherRepository) {
// Do something when the other repository emits a new state
}
}
}
Implementation
@override
FutureOr<void> build(BuildTrigger trigger) async {
if (!_courses.state.hasData || !_tasks.state.hasData) return;
final courses = _courses.state.requireData;
final tasks = _tasks.state.requireData;
data(
Map.fromEntries(
courses.map(
(course) => MapEntry(
course.id,
TaskAggregate.fromTasks(
tasks.where((task) => task.courseId == course.id),
),
),
),
),
);
}