Set search cycle by api

This commit is contained in:
hanie.khodkari
2025-05-10 19:18:12 +03:30
parent b43d5c90fd
commit 14a6f06a43
11 changed files with 76 additions and 17 deletions
+4
View File
@@ -182,4 +182,8 @@ class Url {
static String searchTestResults(String value) { static String searchTestResults(String value) {
return '$baseUrl/TestResults?test_type_name=$value'; return '$baseUrl/TestResults?test_type_name=$value';
} }
static String searchCycles(String id) {
return '$baseUrl/Cycles?cycle_id=$id';
}
} }
+12 -3
View File
@@ -68,6 +68,7 @@ class _CycleResultScreenState extends State<CycleResultScreen> {
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: () {
@@ -188,9 +189,17 @@ class _CycleResultScreenState extends State<CycleResultScreen> {
deviceBlockSize: _deviceBlockSize, deviceBlockSize: _deviceBlockSize,
text: 'cycle', text: 'cycle',
onChanged: (value) { onChanged: (value) {
Provider.of<CyclesProvider>(context, searchVal = value;
listen: false) // Provider.of<CyclesProvider>(context,
.search(value); // listen: false)
// .search(value);
},
onTap: () async {
var cycles = await Provider.of<CyclesProvider>(
context,
listen: false);
cycles.setLoading();
await cycles.search(searchVal);
}, },
), ),
SizedBox( SizedBox(
@@ -238,6 +238,7 @@ class _ItemResultScreenState extends State<ItemResultScreen> {
Provider.of<ItemProvider>(context, listen: false) Provider.of<ItemProvider>(context, listen: false)
.search(value); .search(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -162,6 +162,7 @@ class _MyItemsMineScreenState extends State<MyItemsMineScreen> {
Provider.of<MyItemProvider>(context, listen: false) Provider.of<MyItemProvider>(context, listen: false)
.searchMyItems(value); .searchMyItems(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -135,6 +135,7 @@ class _ItemsTransferScreenState extends State<ItemsTransferScreen> {
Provider.of<UsersProvider>(context, listen: false) Provider.of<UsersProvider>(context, listen: false)
.searchUsers(value); .searchUsers(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -13,6 +13,7 @@ import 'package:provider/provider.dart';
class MyPackagesMineScreen extends StatefulWidget { class MyPackagesMineScreen extends StatefulWidget {
final bool? isAdmin; final bool? isAdmin;
const MyPackagesMineScreen({ const MyPackagesMineScreen({
Key? key, Key? key,
this.isAdmin, this.isAdmin,
@@ -133,6 +134,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
Provider.of<MyPackageProvider>(context, listen: false) Provider.of<MyPackageProvider>(context, listen: false)
.searchMyPackages(value); .searchMyPackages(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -146,8 +148,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
color: Colors.black, color: Colors.black,
), ),
) )
: packageResults.myPackages?.length != : packageResults.myPackages?.length != 0
0
? ListView.builder( ? ListView.builder(
controller: sc, controller: sc,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@@ -172,10 +173,11 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
shrinkWrap: true, shrinkWrap: true,
) )
: Container( : Container(
child: Center( child: Center(
child: Text("There is no item to show."), child:
), Text("There is no item to show."),
); ),
);
}, },
), ),
), ),
@@ -130,6 +130,7 @@ class _PackageTransferScreenState extends State<PackageTransferScreen> {
Provider.of<UsersProvider>(context, listen: false) Provider.of<UsersProvider>(context, listen: false)
.searchUsers(value); .searchUsers(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@@ -203,6 +203,7 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
Provider.of<PackageProvider>(context, listen: false) Provider.of<PackageProvider>(context, listen: false)
.search(value); .search(value);
}, },
onTap: () {},
), ),
SizedBox( SizedBox(
height: 20, height: 20,
+30 -6
View File
@@ -271,14 +271,37 @@ class CyclesProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void search(String value) { Future<void> search(String value) async {
print(value);
items = []; items = [];
searchBoxValue = value; searchBoxValue = value;
originalItems!.forEach((result) { var response = await http.get(
if (result.id.toString().contains(searchBoxValue)) { Uri.parse(Url.searchCycles(value)),
items!.add(result); headers: {
'Authorization': User.token,
},
);
var testResultData = json.decode(response.body);
List<String> labels = [];
if (pageNumber == 1) {
originalItems = [];
items = [];
}
for (var item in testResultData['data']) {
labels = [];
for (var label in item['labels']) {
labels.add(label['id'].toString());
} }
}); items!.add(
CycleResultObject(
createdAt: item['date'],
id: item['id'].toString(),
label: labels,
),
);
}
resetLoading();
notifyListeners(); notifyListeners();
} }
@@ -332,8 +355,9 @@ class CyclesProvider extends ChangeNotifier {
), ),
); );
} }
items = originalItems;
pageNumber += 1; pageNumber += 1;
search(''); notifyListeners();
} }
Future<CycleDetailObject> showCycleResult(String id) async { Future<CycleDetailObject> showCycleResult(String id) async {
@@ -8,6 +8,7 @@ class ResultSearchBox extends StatelessWidget {
required double deviceBlockSize, required double deviceBlockSize,
required this.text, required this.text,
required this.onChanged, required this.onChanged,
required this.onTap,
this.text2 = 'ID', this.text2 = 'ID',
this.textInputType = TextInputType.number, this.textInputType = TextInputType.number,
}) : _deviceBlockSize = deviceBlockSize, }) : _deviceBlockSize = deviceBlockSize,
@@ -18,6 +19,7 @@ class ResultSearchBox extends StatelessWidget {
final String text; final String text;
final String text2; final String text2;
final dynamic onChanged; final dynamic onChanged;
final dynamic onTap;
final TextInputType textInputType; final TextInputType textInputType;
@override @override
@@ -40,6 +42,20 @@ class ResultSearchBox extends StatelessWidget {
labelText: 'Search by $text $text2', labelText: 'Search by $text $text2',
isDense: true, isDense: true,
contentPadding: EdgeInsets.symmetric(vertical: 2, horizontal: 3), contentPadding: EdgeInsets.symmetric(vertical: 2, horizontal: 3),
suffixIcon: InkWell(
onTap: onTap,
child: Container(
margin: EdgeInsets.all(5),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.input,
color: Colors.white,
),
),
),
), ),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
@@ -52,8 +52,7 @@ class TestResultSearchBox extends StatelessWidget {
color: Colors.black, color: Colors.black,
), ),
child: Icon( child: Icon(
Icons.space_bar, Icons.input,
// size: 4 * _deviceBlockSize,
color: Colors.white, color: Colors.white,
), ),
), ),