Set search for my package & package by api

This commit is contained in:
hanie.khodkari
2025-05-10 21:24:45 +03:30
parent 948847cd36
commit 1352e36f87
5 changed files with 80 additions and 37 deletions
+9
View File
@@ -190,7 +190,16 @@ class Url {
static String searchItems(String value) { static String searchItems(String value) {
return '$baseUrl/Items?name=$value'; return '$baseUrl/Items?name=$value';
} }
static String searchMyItems(String value) { static String searchMyItems(String value) {
return '$baseUrl/MyItems?name=$value'; return '$baseUrl/MyItems?name=$value';
} }
static String searchPackages(String value) {
return '$baseUrl/Packages?name=$value';
}
static String searchMyPackages(String value) {
return '$baseUrl/MyPackages?name=$value';
}
} }
@@ -68,6 +68,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
final double _deviceWidth = _media.size.width; final double _deviceWidth = _media.size.width;
final double _deviceBlockSize = _deviceWidth / 100; final double _deviceBlockSize = _deviceWidth / 100;
final userData = Provider.of<Auth>(context, listen: false).user; final userData = Provider.of<Auth>(context, listen: false).user;
var searchVal;
return Consumer<ConnectivityProvider>( return Consumer<ConnectivityProvider>(
builder: (ct, connection, _) { builder: (ct, connection, _) {
return connection.conStatus != 'offline' return connection.conStatus != 'offline'
@@ -129,12 +130,18 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
ResultSearchBox( ResultSearchBox(
searchCTRL: searchCTRL, searchCTRL: searchCTRL,
text: 'package', text: 'package',
text2: "name",
deviceBlockSize: _deviceBlockSize, deviceBlockSize: _deviceBlockSize,
onChanged: (value) { onChanged: (value) {
Provider.of<MyPackageProvider>(context, listen: false) searchVal = value;
.searchMyPackages(value); },
onTap: () async {
var myPackages = await Provider.of<MyPackageProvider>(
context,
listen: false);
myPackages.setLoading();
await myPackages.searchMyPackages(searchVal);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -98,6 +98,7 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
final _media = MediaQuery.of(context); final _media = MediaQuery.of(context);
final double _devicewidth = _media.size.width; final double _devicewidth = _media.size.width;
final double _deviceBlockSize = _devicewidth / 100; final double _deviceBlockSize = _devicewidth / 100;
var searchVal;
return SafeArea( return SafeArea(
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
@@ -198,12 +199,18 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
ResultSearchBox( ResultSearchBox(
searchCTRL: searchCTRL, searchCTRL: searchCTRL,
text: 'package', text: 'package',
text2: "name",
deviceBlockSize: _deviceBlockSize, deviceBlockSize: _deviceBlockSize,
onChanged: (value) { onChanged: (value) {
Provider.of<PackageProvider>(context, listen: false) searchVal = value;
.search(value); },
onTap: () async {
var packages = await Provider.of<PackageProvider>(
context,
listen: false);
packages.setLoading();
await packages.search(searchVal);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
+23 -8
View File
@@ -41,17 +41,30 @@ class MyPackageProvider extends ChangeNotifier {
void setLoading() { void setLoading() {
isloading = true; isloading = true;
// notifyListeners(); notifyListeners();
} }
void searchMyPackages(String value) { Future<void> searchMyPackages(String value) async {
myPackages = []; myPackages = [];
searchBoxValue = value; searchBoxValue = value;
originalMyPackages!.forEach((result) { var response = await http.get(
if (result.id.toString().contains(searchBoxValue)) { Uri.parse(Url.searchMyPackages(value)),
myPackages!.add(result); headers: {'Authorization': User.token, "Accept": "application/json"},
} );
});
var packagesData = json.decode(response.body);
for (var package in packagesData['data']) {
myPackages!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
createdAt: package['created_at'].toString(),
userName: package['user'] != null ? package['user']['name'] : '',
),
);
}
resetLoading();
notifyListeners(); notifyListeners();
} }
@@ -119,8 +132,10 @@ class MyPackageProvider extends ChangeNotifier {
), ),
); );
} }
myPackages = originalMyPackages;
pageNumber += 1; pageNumber += 1;
searchMyPackages(''); // searchMyPackages('');
notifyListeners();
} }
// Future<void> getHospitalPackages() async { // Future<void> getHospitalPackages() async {
+28 -23
View File
@@ -166,7 +166,7 @@ class PackageProvider extends ChangeNotifier {
void setLoading() { void setLoading() {
isloading = true; isloading = true;
// notifyListeners(); notifyListeners();
} }
bool isloadingButton = false; bool isloadingButton = false;
@@ -341,29 +341,32 @@ class PackageProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void search(String value) { Future<void> search(String value) async {
items = []; items = [];
searchBoxValue = value; searchBoxValue = value;
originalItems!.forEach((result) { var response = await http.get(
if (result.id Uri.parse(Url.searchPackages(value)),
.toString() headers: {
.toLowerCase() 'Authorization': User.token,
.contains(searchBoxValue.toLowerCase()) || },
result.id );
.toString()
.toUpperCase() var testResultData = json.decode(response.body);
.contains(searchBoxValue.toUpperCase()) || for (var item in testResultData['data']) {
result.id List<String> itemsId =
.toString() (item['items'] as List).map((item) => item['id'].toString()).toList();
.toLowerCase() items!.add(
.contains(searchBoxValue.toUpperCase()) || PackageResultObject(
result.id createdAt: item['created_at'],
.toString() id: item['id'].toString(),
.toUpperCase() name: item['name'],
.contains(searchBoxValue.toLowerCase())) { status: item['status'],
items!.add(result); userName: item['user']['name'],
} itemsId: itemsId,
}); ),
);
}
resetLoading();
notifyListeners(); notifyListeners();
} }
@@ -409,8 +412,10 @@ class PackageProvider extends ChangeNotifier {
), ),
); );
} }
items = originalItems;
pageNumber += 1; pageNumber += 1;
search(''); // search('');
notifyListeners();
} }
Future<PackageDetailObject> showPackageResult(String id) async { Future<PackageDetailObject> showPackageResult(String id) async {