Skip to content

Commit 537d9f9

Browse files
committed
Add usage of the PaginatedModelList
1 parent d7b6604 commit 537d9f9

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

lib/feature/notification/notification_page.dart

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import 'package:stelaris/api/model/notification_model.dart';
55
import 'package:stelaris/api/state/actions/notification_actions.dart';
66
import 'package:stelaris/api/state/app_state.dart';
77
import 'package:stelaris/api/state/factory/notification/notification_vm_state.dart';
8-
import 'package:stelaris/feature/base/base_model_view.dart';
98
import 'package:stelaris/feature/base/model_text.dart';
9+
import 'package:stelaris/feature/base/paginated_model_list.dart';
1010
import 'package:stelaris/feature/dialogs/entry_update_dialog.dart';
1111
import 'package:stelaris/feature/notification/notification_page_general.dart';
1212
import 'package:stelaris/util/constants.dart';
@@ -21,20 +21,33 @@ class NotificationPage extends StatelessWidget {
2121
vm: () => NotificationVmFactory(),
2222
onInit: (store) => store.dispatchAndWait(InitNotificationAction()),
2323
builder: (context, vm) {
24-
return BaseModelView<NotificationModel>(
25-
mapToDataModelItem: (value) =>
26-
TextWidget(displayName: value.uiName),
27-
openFunction: () => _openCreationDialog(context),
28-
selectedItem: vm.selected,
29-
mapToDeleteDialog: (value) => createDeleteText(value.uiName, context),
30-
mapToDeleteSuccessfully: (value) {
31-
context.dispatch(RemoveNotificationAction(value));
32-
return true;
33-
},
34-
callFunction: (model) => context.dispatch(SelectedNotificationAction(model)),
35-
models: vm.models,
36-
child: _mapPageToWidget(vm.selected),
37-
compareFunction: (model) => vm.isSelectedItem(model),
24+
return Row(
25+
mainAxisSize: MainAxisSize.min,
26+
crossAxisAlignment: CrossAxisAlignment.start,
27+
children: [
28+
PaginatedModelList<NotificationModel>(
29+
mapToDataModelItem: (value) =>
30+
TextWidget(displayName: value.uiName),
31+
openFunction: () => _openCreationDialog(context),
32+
selectedItem: vm.selected,
33+
mapToDeleteDialog: (value) =>
34+
createDeleteText(value.uiName, context),
35+
mapToDeleteSuccessfully: (value) {
36+
context.dispatch(NotificationRemoveAction(value));
37+
return true;
38+
},
39+
callFunction: (model) =>
40+
context.dispatch(SelectedNotificationAction(model)),
41+
models: vm.models,
42+
compareFunction: (model) => vm.isSelectedItem(model),
43+
hasMore: vm.hasNextPage,
44+
isLoadingMore: vm.isLoadingMore,
45+
onLoadMore: vm.hasNextPage && !vm.isLoadingMore
46+
? () => context.dispatch(InitNotificationAction())
47+
: null,
48+
),
49+
if (vm.selected != null) _mapPageToWidget(vm.selected)!,
50+
],
3851
);
3952
},
4053
);
@@ -61,7 +74,10 @@ class NotificationPage extends StatelessWidget {
6174
final input = value as String;
6275
return checkIfEmptyAndReturnErrorString(input, context);
6376
},
64-
clearFunction: (text) => text.trim().isNotEmpty,
77+
clearFunction: (text) =>
78+
text
79+
.trim()
80+
.isNotEmpty,
6581
);
6682
},
6783
);

0 commit comments

Comments
 (0)