update pagination listener

This commit is contained in:
tzw
2024-01-23 17:48:34 +06:30
parent f3f75a80c6
commit 5ec51c31fd
13 changed files with 186 additions and 181 deletions

View File

@@ -81,7 +81,7 @@ class CartonModel extends BaseModel {
set selectedIndexFilter(int index) {
_selectedIndexFilter = index;
_loadCartonsByFilter(
_loadPaginationCartons(
_selectedIndexFilter == 1 ? "carton_weight" : "user_name");
notifyListeners();
}
@@ -109,12 +109,8 @@ class CartonModel extends BaseModel {
Future<void> _initData() async {
logout();
_selectedIndexFilter = 1;
cartonsByFilter = PaginatorListener<Carton>(
(data, id) => Carton.fromMap(data, id), onChange: () {
notifyListeners();
}, rowPerLoad: 30, insertNewByListener: true);
_loadCartonsByFilter(
_loadPaginationCartons(
_selectedIndexFilter == 1 ? "carton_weight" : "user_name");
}
@@ -146,30 +142,26 @@ class CartonModel extends BaseModel {
}
}
Future<void> _loadCartonsByFilter(String orderName) async {
_loadPaginationCartons(String orderName) {
if (user == null || !user!.hasCarton()) return null;
String path = "/$cartons_collection";
try {
Query listenerQuery = FirebaseFirestore.instance
.collection("$path")
.where("carton_type", whereIn: [
carton_from_packages,
carton_from_cartons
]).where("status", isEqualTo: carton_packed_status);
Query col = FirebaseFirestore.instance.collection(path).where("carton_type",
whereIn: [
carton_from_packages,
carton_from_cartons
]).where("status", isEqualTo: carton_packed_status);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("carton_type",
whereIn: [carton_from_packages, carton_from_cartons])
.where("status", isEqualTo: carton_packed_status)
.orderBy(orderName, descending: true);
Query pageQuery = FirebaseFirestore.instance
.collection("$path")
.where("carton_type",
whereIn: [carton_from_packages, carton_from_cartons])
.where("status", isEqualTo: carton_packed_status)
.orderBy(orderName, descending: true);
cartonsByFilter!
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
} catch (e) {
log.warning("Error!! $e");
}
cartonsByFilter?.close();
cartonsByFilter = PaginatorListener<Carton>(
col, pageQuery, (data, id) => Carton.fromMap(data, id),
rowPerLoad: 30);
}
Paginator? _getDelivered() {

View File

@@ -7,8 +7,11 @@ import 'package:fcs/domain/entities/user.dart';
import 'package:fcs/pages/main/model/base_model.dart';
import 'package:logging/logging.dart';
import '../../../pagination/paginator_listener.dart';
class CustomerModel extends BaseModel {
final log = Logger('CustomerModel');
PaginatorListener<User>? getCustomers;
List<User> customers = [];
List<User> invitations = [];
@@ -28,8 +31,11 @@ class CustomerModel extends BaseModel {
if (invitationListener != null) invitationListener!.cancel();
customers = [];
invitations = [];
getCustomers?.close();
}
Future<void> inviteUser(String userName, String phoneNumber) {
return Services.instance.userService.inviteUser(userName, phoneNumber);
}

View File

@@ -26,8 +26,8 @@ class PackageModel extends BaseModel {
set menuSelectedIndex(int index) {
_menuSelectedIndex = index;
_loadPackages(_menuSelectedIndex == 2);
_loadCustomerPackages(_menuSelectedIndex == 2);
_loadPaginationPackages(_menuSelectedIndex == 2);
_loadPaginationCustomerPackages(_menuSelectedIndex == 2);
notifyListeners();
}
@@ -41,24 +41,11 @@ class PackageModel extends BaseModel {
}
Future<void> _initData() async {
logout();
_menuSelectedIndex = 1;
packages = PaginatorListener<Package>(
(data, id) => Package.fromMap(data, id), onChange: () {
notifyListeners();
}, rowPerLoad: 30, insertNewByListener: true);
customerPackages = PaginatorListener<Package>(
(data, id) => Package.fromMap(data, id), onChange: () {
notifyListeners();
}, rowPerLoad: 30, insertNewByListener: true);
activePackages = PaginatorListener<Package>(
(data, id) => Package.fromMap(data, id), onChange: () {
notifyListeners();
}, rowPerLoad: 30, insertNewByListener: true);
_loadPackages(_menuSelectedIndex == 2);
_loadCustomerPackages(_menuSelectedIndex == 2);
_loadActivePackages();
_loadPaginationPackages(_menuSelectedIndex == 2);
_loadPaginationCustomerPackages(_menuSelectedIndex == 2);
_loadPaginationActivePackages();
}
@override
@@ -68,71 +55,68 @@ class PackageModel extends BaseModel {
if (activePackages != null) activePackages!.close();
}
Future<void> _loadPackages(bool isDelivered) async {
_loadPaginationPackages(bool isDelivered) {
if (user == null) return;
if (!((user!.hasPackages() ||
user!.hasReceiving() ||
user!.hasProcessing()))) return;
String path = "/$packages_collection";
try {
Query listenerQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered);
Query col = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered)
.orderBy("update_time", descending: true);
pageQuery = pageQuery.orderBy("update_time", descending: true);
packages!.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
} catch (e) {
log.warning("Error!! $e");
}
packages?.close();
packages = PaginatorListener<Package>(
col, pageQuery, (data, id) => Package.fromMap(data, id),
rowPerLoad: 30);
}
Future<void> _loadCustomerPackages(bool isDelivered) async {
_loadPaginationCustomerPackages(bool isDelivered) {
if (user == null) return;
String path = "/$packages_collection";
try {
Query listenerQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered)
.where("user_id", isEqualTo: user!.id);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered)
.where("user_id", isEqualTo: user!.id)
.orderBy("update_time", descending: true);
Query col = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered)
.where("user_id", isEqualTo: user!.id);
customerPackages!
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
} catch (e) {
log.warning("Error!! $e");
}
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: isDelivered)
.where("user_id", isEqualTo: user!.id)
.orderBy("update_time", descending: true);
customerPackages?.close();
customerPackages = PaginatorListener<Package>(
col, pageQuery, (data, id) => Package.fromMap(data, id),
rowPerLoad: 30);
}
Future<void> _loadActivePackages() async {
_loadPaginationActivePackages() {
if (user == null) return;
if (!((user!.hasPackages() ||
user!.hasReceiving() ||
user!.hasProcessing()))) return;
String path = "/$packages_collection";
try {
Query listenerQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: false);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: false);
Query col = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: false);
pageQuery = pageQuery.orderBy("update_time", descending: true);
activePackages!
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
} catch (e) {
log.warning("Error!! $e");
}
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.where("is_delivered", isEqualTo: false)
.orderBy("update_time", descending: true);
activePackages?.close();
activePackages = PaginatorListener<Package>(
col, pageQuery, (data, id) => Package.fromMap(data, id),
rowPerLoad: 30);
}
Future<Package?> getPackage(String id) async {

View File

@@ -85,11 +85,8 @@ class _PackageListState extends State<PackageList> {
),
body: PaginatorListView<Package>(
paginatorListener: packages!,
rowBuilder: (p) => PackageListRow(
key: ValueKey(p.id),
package: p,
isCustomer: widget.forCustomer,
),
rowBuilder: (p) =>
PackageListRow(package: p, isCustomer: widget.forCustomer),
color: primaryColor,
)),
);

View File

@@ -27,12 +27,7 @@ class PickupModel extends BaseModel {
}
Future<void> _initData() async {
logout();
pickups = PaginatorListener<Pickup>((data, id) => Pickup.fromMap(data, id),
onChange: () {
notifyListeners();
}, rowPerLoad: 30, insertNewByListener: true);
_loadPickups();
_loadPaginationPickups();
}
@override
@@ -40,20 +35,18 @@ class PickupModel extends BaseModel {
if (pickups != null) pickups!.close();
}
Future<void> _loadPickups() async {
_loadPaginationPickups() {
if (user == null) return;
String path = "/$pickup_collection";
Query col = FirebaseFirestore.instance.collection(path);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.orderBy("update_time", descending: true);
try {
Query listenerQuery = FirebaseFirestore.instance.collection(path);
Query pageQuery = FirebaseFirestore.instance
.collection(path)
.orderBy("update_time", descending: true);
pickups!.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
} catch (e) {
log.warning("Error!! $e");
}
pickups?.close();
pickups = PaginatorListener<Pickup>(
col, pageQuery, (data, id) => Pickup.fromMap(data, id),
rowPerLoad: 30);
}
Future<void> complete(

View File

@@ -65,7 +65,7 @@ class _PickupListState extends State<PickupList> {
),
body: PaginatorListView<Pickup>(
paginatorListener: pickups!,
rowBuilder: (p) => PickupListRow(key: ValueKey(p.id), pickup: p),
rowBuilder: (p) => PickupListRow(pickup: p),
color: primaryColor,
)),
);

View File

@@ -74,10 +74,7 @@ class _ProcessingListState extends State<ProcessingList> {
),
body: PaginatorListView<Package>(
paginatorListener: packages!,
rowBuilder: (p) => ProcessingListRow(
key: ValueKey(p.id),
package: p,
),
rowBuilder: (p) => ProcessingListRow(package: p),
color: primaryColor,
)),
);

View File

@@ -65,10 +65,7 @@ class _ProcessingListState extends State<ProcessingList> {
),
body: PaginatorListView<Package>(
paginatorListener: packages!,
rowBuilder: (p) => ProcessingListRow(
key: ValueKey(p.id),
package: p,
),
rowBuilder: (p) => ProcessingListRow(package: p),
color: primaryColor,
)),
);

View File

@@ -73,13 +73,9 @@ class _ReceivingListState extends State<ReceivingList> {
backgroundColor: primaryColor,
),
body: PaginatorListView<Package>(
paginatorListener: packages!,
rowBuilder: (p) => ReceivingListRow(
key: ValueKey(p.id),
package: p,
),
color: primaryColor,
)),
paginatorListener: packages!,
rowBuilder: (p) => ReceivingListRow(package: p),
color: primaryColor)),
);
}

View File

@@ -1,5 +1,4 @@
import 'package:fcs/helpers/theme.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'local_text.dart';