/
counter_view_model.dart
60 lines (43 loc) · 1.25 KB
/
counter_view_model.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:h1_flutter_riverpod/data/models/counter_model.dart';
import 'package:h1_flutter_riverpod/data/repository/Repository.dart';
import 'package:h1_flutter_riverpod/domain/usecase/UseCase.dart';
import 'model/view_state.dart';
final viewModelProvider = ChangeNotifierProvider((ref) => ViewModel());
class ViewModel extends ChangeNotifier {
ViewModel() {
_useCase.iniLoad();
}
final UseCase _useCase = Repository();
CounterModel get counter => _useCase.getCounter();
void increment() {
_useCase.increment();
}
bool isEven() {
return _useCase.isEven();
}
ViewState _state = ViewState.odd();
ViewState get state => _state;
void resetState() {
_state = ViewState.odd();
notifyListeners();
}
void setState(ViewState viewsState) => _state = viewsState;
CounterModel get evenCounter => _useCase.getEvenCounter();
void incrementEvenCounter() {
_useCase.incrementEvenCounter();
}
void onFabPressed() {
increment();
if (isEven()) {
setEvenState();
} else
resetState();
}
void setEvenState() {
incrementEvenCounter();
setState(ViewState.even());
notifyListeners();
}
}