45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:instruction_app/data/interface/IRepository.dart';
|
|
import 'package:instruction_app/models/organization.dart';
|
|
|
|
class OrganizationProvider extends ChangeNotifier {
|
|
final Repository<Organization> _repository;
|
|
|
|
OrganizationProvider(this._repository);
|
|
|
|
List<Organization> _organizations = [];
|
|
List<Organization> get organizations => _organizations;
|
|
|
|
bool _isLoading = false;
|
|
bool get isLoading => _isLoading;
|
|
|
|
Future<void> loadOrganizations() async {
|
|
setLoading(false);
|
|
_organizations = await _repository.load();
|
|
setLoading(true);
|
|
}
|
|
|
|
Future<void> addOrganization(String title) async {
|
|
final newOrganization = Organization(
|
|
title: title
|
|
);
|
|
await _repository.add(newOrganization);
|
|
await loadOrganizations();
|
|
}
|
|
|
|
Future<void> updateOrganization(Organization organization) async {
|
|
await _repository.update(organization);
|
|
await loadOrganizations();
|
|
}
|
|
|
|
Future<void> deleteOrganization(String id) async {
|
|
await _repository.delete(id);
|
|
_organizations.removeWhere((item) => item.id == id);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setLoading(bool value){
|
|
_isLoading = value;
|
|
notifyListeners();
|
|
}
|
|
} |