11import 'dart:async' ;
22
3- import 'package:meta/meta .dart' ;
3+ import 'package:collection/equality .dart' ;
44import 'package:mvi_base/src/models/models.dart' ;
5- import 'package:mvi_base/src/models/user.dart' ;
65import 'package:mvi_base/src/mvi_core.dart' ;
7- import 'package:mvi_base/src/todos_interactor .dart' ;
6+ import 'package:mvi_base/src/todo_list_interactor .dart' ;
87import 'package:mvi_base/src/user_interactor.dart' ;
98import 'package:rxdart/rxdart.dart' ;
109
@@ -17,15 +16,22 @@ class TodosListModel {
1716 final User user;
1817
1918 TodosListModel ({
20- this .activeFilter,
21- this .allComplete,
22- this .hasCompletedTodos,
23- this .visibleTodos,
24- this .loading,
25- this .user,
19+ required this .activeFilter,
20+ required this .allComplete,
21+ required this .hasCompletedTodos,
22+ required this .visibleTodos,
23+ required this .loading,
24+ required this .user,
2625 });
2726
28- factory TodosListModel .initial () => TodosListModel (loading: true );
27+ factory TodosListModel .initial () => TodosListModel (
28+ loading: true ,
29+ activeFilter: VisibilityFilter .all,
30+ allComplete: false ,
31+ hasCompletedTodos: false ,
32+ visibleTodos: [],
33+ user: User (displayName: '' ),
34+ );
2935
3036 @override
3137 String toString () {
@@ -40,7 +46,7 @@ class TodosListModel {
4046 activeFilter == other.activeFilter &&
4147 allComplete == other.allComplete &&
4248 hasCompletedTodos == other.hasCompletedTodos &&
43- visibleTodos == other.visibleTodos &&
49+ const ListEquality < Todo >(). equals ( visibleTodos, other.visibleTodos) &&
4450 loading == other.loading &&
4551 user == other.user;
4652
@@ -69,7 +75,8 @@ class TodosListView implements MviView {
6975 VisibilityFilter .all,
7076 );
7177
72- Future <List <dynamic >> tearDown () {
78+ @override
79+ Future <void > tearDown () {
7380 return Future .wait ([
7481 addTodo.close (),
7582 deleteTodo.close (),
@@ -83,12 +90,12 @@ class TodosListView implements MviView {
8390
8491class TodosListPresenter extends MviPresenter <TodosListModel > {
8592 final TodosListView _view;
86- final TodosInteractor _interactor;
93+ final TodoListInteractor _interactor;
8794
8895 TodosListPresenter ({
89- @ required TodosListView view,
90- @ required TodosInteractor todosInteractor,
91- @ required UserInteractor userInteractor,
96+ required TodosListView view,
97+ required TodoListInteractor todosInteractor,
98+ required UserInteractor userInteractor,
9299 }) : _view = view,
93100 _interactor = todosInteractor,
94101 super (
@@ -109,7 +116,7 @@ class TodosListPresenter extends MviPresenter<TodosListModel> {
109116
110117 static Stream <TodosListModel > _buildStream (
111118 TodosListView view,
112- TodosInteractor interactor,
119+ TodoListInteractor interactor,
113120 UserInteractor repository,
114121 ) {
115122 return Rx .defer (() async * {
@@ -145,7 +152,6 @@ class TodosListPresenter extends MviPresenter<TodosListModel> {
145152 case VisibilityFilter .completed:
146153 return todos.where ((todo) => todo.complete).toList ();
147154 case VisibilityFilter .all:
148- default :
149155 return todos;
150156 }
151157 }
0 commit comments