import 'package:customer/constant/constant.dart'; import 'package:customer/models/product_model.dart'; import 'package:customer/models/vendor_model.dart'; import '../service/fire_store_utils.dart'; import 'package:get/get.dart'; class SearchScreenController extends GetxController { @override void onInit() { // TODO: implement onInit getArgument(); super.onInit(); } RxBool isLoading = true.obs; RxList vendorList = [].obs; RxList vendorSearchList = [].obs; RxList productList = [].obs; RxList productSearchList = [].obs; Future getArgument() async { dynamic argumentData = Get.arguments; if (argumentData != null) { vendorList.value = argumentData['vendorList']; productList.clear(); } isLoading.value = false; for (var element in vendorList) { await FireStoreUtils.getProductByVendorId(element.id.toString()).then(( value, ) { if ((Constant.isSubscriptionModelApplied == true || element.adminCommission?.isEnabled == true) && element.subscriptionPlan != null) { if (element.subscriptionPlan?.itemLimit == '-1') { productList.addAll(value); } else { int selectedProduct = value.length < int.parse(element.subscriptionPlan?.itemLimit ?? '0') ? (value.isEmpty ? 0 : (value.length)) : int.parse(element.subscriptionPlan?.itemLimit ?? '0'); productList.addAll(value.sublist(0, selectedProduct)); } } else { productList.addAll(value); } }); } } void onSearchTextChanged(String text) { if (text.isEmpty) { return; } vendorSearchList.clear(); productSearchList.clear(); for (var element in vendorList) { if (element.title!.toLowerCase().contains(text.toLowerCase())) { vendorSearchList.add(element); } } for (var element in productList) { if (element.name!.toLowerCase().contains(text.toLowerCase())) { productSearchList.add(element); } } } @override void dispose() { vendorSearchList.clear(); productSearchList.clear(); super.dispose(); } }