sender and consignee selection
This commit is contained in:
@@ -108,7 +108,7 @@ class _CartonFilterState extends State<CartonFilter> {
|
||||
Future<void> _loadMoreConsignee() async {
|
||||
if (_isLoadMoreConsignee) return;
|
||||
var model = context.read<ConsigneeSelectionModel>();
|
||||
if (model.reachEnd || model.ended) return;
|
||||
if (model.ended) return;
|
||||
setState(() {
|
||||
_isLoadMoreConsignee = true;
|
||||
});
|
||||
@@ -141,7 +141,7 @@ class _CartonFilterState extends State<CartonFilter> {
|
||||
Future<void> _loadMoreSender() async {
|
||||
if (_isLoadMoreSender) return;
|
||||
var model = context.read<SenderSelectionModel>();
|
||||
if (model.reachEnd || model.ended) return;
|
||||
if (model.ended) return;
|
||||
setState(() {
|
||||
_isLoadMoreSender = true;
|
||||
});
|
||||
|
||||
@@ -1,23 +1,28 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:fcs/config.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import '../../../domain/constants.dart';
|
||||
import '../../../domain/entities/user.dart';
|
||||
import '../../../helpers/api_helper.dart';
|
||||
import '../../../helpers/firebase_helper.dart';
|
||||
import '../../main/model/base_model.dart';
|
||||
|
||||
class ConsigneeSelectionModel extends BaseModel {
|
||||
final log = Logger("ConsigneeSearchModel");
|
||||
// for search
|
||||
String query = "";
|
||||
int offset = 0;
|
||||
bool reachEnd = false;
|
||||
List<User> _consignees = [];
|
||||
|
||||
List<User> get getConsginees {
|
||||
var users = new List<User>.from(_consignees);
|
||||
return users..insert(0, User(id: all, name: "All"));
|
||||
if (query == "") {
|
||||
return users..insert(0, User(id: all, name: "All"));
|
||||
}
|
||||
return users;
|
||||
}
|
||||
|
||||
bool isLoading = false;
|
||||
@@ -30,8 +35,6 @@ class ConsigneeSelectionModel extends BaseModel {
|
||||
search(String term, {bool imm = false}) async {
|
||||
query = term;
|
||||
_consignees.clear();
|
||||
offset = 0;
|
||||
reachEnd = false;
|
||||
t?.cancel();
|
||||
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
|
||||
await loadMoreSearch(term: term);
|
||||
@@ -43,35 +46,26 @@ class ConsigneeSelectionModel extends BaseModel {
|
||||
await _refresh();
|
||||
return;
|
||||
}
|
||||
// int rowPerPage = 21;
|
||||
// List<Carton> list = [];
|
||||
// SearchPara searchPara = SearchPara(filters: [], term: term);
|
||||
// isLoading = true;
|
||||
var bytes = utf8.encode(term);
|
||||
var base64Str = base64.encode(bytes);
|
||||
HtmlEscape htmlEscape = const HtmlEscape();
|
||||
String escapeSender = htmlEscape.convert(base64Str);
|
||||
|
||||
// var path =
|
||||
// "/search/$cartons_collection/${searchPara.escapeTerm}/$rowPerPage/$offset/${searchPara.escapeFilters}";
|
||||
int rowPerPage = 20;
|
||||
List<User> list = [];
|
||||
|
||||
// var result = await requestAPI(path, "GET",
|
||||
// token: await getToken(), url: Config.instance.searchURL);
|
||||
var result = await requestAPI(
|
||||
"/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
|
||||
url: Config.instance.reportURL, token: await getToken());
|
||||
|
||||
// if (result != null) {
|
||||
// for (var row in result) {
|
||||
// var item = ArtistExt.fromMapForSearch(row);
|
||||
// list.add(item);
|
||||
// }
|
||||
// }
|
||||
if (result != null) {
|
||||
for (var row in result) {
|
||||
var item = User.fromJson(row);
|
||||
list.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// for (var p in list) {
|
||||
// selectedArtistList.contains(p)
|
||||
// ? p.isSelected = true
|
||||
// : p.isSelected = false;
|
||||
// }
|
||||
|
||||
// artists.addAll(list);
|
||||
// offset += rowPerPage;
|
||||
// if (list.length < rowPerPage) {
|
||||
// reachEnd = true;
|
||||
// }
|
||||
_consignees = List.from(list);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,28 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import '../../../config.dart';
|
||||
import '../../../domain/constants.dart';
|
||||
import '../../../domain/entities/user.dart';
|
||||
import '../../../helpers/api_helper.dart';
|
||||
import '../../../helpers/firebase_helper.dart';
|
||||
import '../../main/model/base_model.dart';
|
||||
|
||||
class SenderSelectionModel extends BaseModel {
|
||||
final log = Logger("SenderSelectionModel");
|
||||
// for search
|
||||
String query = "";
|
||||
int offset = 0;
|
||||
bool reachEnd = false;
|
||||
List<User> _senders = [];
|
||||
|
||||
List<User> get getSenders {
|
||||
var users = new List<User>.from(_senders);
|
||||
return users..insert(0, User(id: all, name: "All"));
|
||||
if (query == "") {
|
||||
return users..insert(0, User(id: all, name: "All"));
|
||||
}
|
||||
return users;
|
||||
}
|
||||
|
||||
bool isLoading = false;
|
||||
@@ -30,8 +35,6 @@ class SenderSelectionModel extends BaseModel {
|
||||
search(String term, {bool imm = false}) async {
|
||||
query = term;
|
||||
_senders.clear();
|
||||
offset = 0;
|
||||
reachEnd = false;
|
||||
t?.cancel();
|
||||
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
|
||||
await loadMoreSearch(term: term);
|
||||
@@ -44,31 +47,28 @@ class SenderSelectionModel extends BaseModel {
|
||||
return;
|
||||
}
|
||||
|
||||
// var bytes = utf8.encode(term);
|
||||
// var base64Str = base64.encode(bytes);
|
||||
// HtmlEscape htmlEscape = const HtmlEscape();
|
||||
// String escapeSender = htmlEscape.convert(base64Str);
|
||||
var bytes = utf8.encode(term);
|
||||
var base64Str = base64.encode(bytes);
|
||||
HtmlEscape htmlEscape = const HtmlEscape();
|
||||
String escapeSender = htmlEscape.convert(base64Str);
|
||||
|
||||
// int rowPerPage = 20;
|
||||
// List<User> list = [];
|
||||
int rowPerPage = 20;
|
||||
List<User> list = [];
|
||||
|
||||
// var result = await requestAPI(
|
||||
// "/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
|
||||
// url: Config.instance.reportURL, token: await getToken());
|
||||
var result = await requestAPI(
|
||||
"/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
|
||||
url: Config.instance.reportURL, token: await getToken());
|
||||
|
||||
// if (result != null) {
|
||||
// for (var row in result) {
|
||||
// var item = User.fromJson(row);
|
||||
// list.add(item);
|
||||
// }
|
||||
// }
|
||||
if (result != null) {
|
||||
for (var row in result) {
|
||||
var item = User.fromJson(row);
|
||||
list.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// _senders.addAll(list);
|
||||
// offset += rowPerPage;
|
||||
// if (list.length < rowPerPage) {
|
||||
// reachEnd = true;
|
||||
// }
|
||||
// notifyListeners();
|
||||
_senders = List.from(list);
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
addDefaultSenders() async {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import 'package:fcs/domain/entities/carton.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
|
||||
import '../carton/print_qr_code_page.dart';
|
||||
import 'carton_search.dart';
|
||||
|
||||
class CartonListRow extends StatelessWidget {
|
||||
@@ -69,7 +71,14 @@ class CartonListRow extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(width: 15),
|
||||
IconButton(
|
||||
onPressed: () {},
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
CupertinoPageRoute(
|
||||
builder: (context) =>
|
||||
PrintQrCodePage(carton: carton)),
|
||||
);
|
||||
},
|
||||
icon: Icon(AntDesign.qrcode,
|
||||
color: Colors.black))
|
||||
],
|
||||
|
||||
@@ -62,6 +62,7 @@ class _CartonSizeEditorState extends State<CartonSizeEditor> {
|
||||
final lengthBox = LengthPicker(
|
||||
controller: _lengthController,
|
||||
lableKey: "box.length",
|
||||
displayFeet: true,
|
||||
);
|
||||
final widthBox = LengthPicker(
|
||||
controller: _widthController,
|
||||
|
||||
Reference in New Issue
Block a user