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

@@ -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,
)),
);