search business bookmarks
This commit is contained in:
@@ -9,10 +9,12 @@ import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services
|
|||||||
class BuildFavouriteBusinessesList extends StatefulWidget {
|
class BuildFavouriteBusinessesList extends StatefulWidget {
|
||||||
final List<BookmarkedBusiness> favouriteBusinesses;
|
final List<BookmarkedBusiness> favouriteBusinesses;
|
||||||
final String? myLocation;
|
final String? myLocation;
|
||||||
|
final String? searchQuery;
|
||||||
const BuildFavouriteBusinessesList({
|
const BuildFavouriteBusinessesList({
|
||||||
super.key,
|
super.key,
|
||||||
required this.favouriteBusinesses,
|
required this.favouriteBusinesses,
|
||||||
required this.myLocation,
|
required this.myLocation,
|
||||||
|
required this.searchQuery,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -22,6 +24,28 @@ class BuildFavouriteBusinessesList extends StatefulWidget {
|
|||||||
|
|
||||||
class _BuildFavouriteBusinessesListState
|
class _BuildFavouriteBusinessesListState
|
||||||
extends State<BuildFavouriteBusinessesList> {
|
extends State<BuildFavouriteBusinessesList> {
|
||||||
|
List<Business?> businesses = [];
|
||||||
|
|
||||||
|
List<Business?> getListOfBusinesses() {
|
||||||
|
List<Business?> businesses = [];
|
||||||
|
for (var item in widget.favouriteBusinesses) {
|
||||||
|
MihBusinessDetailsServices()
|
||||||
|
.getBusinessDetailsByBusinessId(item.business_id)
|
||||||
|
.then((business) {
|
||||||
|
if (business != null) {
|
||||||
|
businesses.add(business);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return businesses;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
businesses = getListOfBusinesses();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ListView.separated(
|
return ListView.separated(
|
||||||
@@ -42,7 +66,14 @@ class _BuildFavouriteBusinessesListState
|
|||||||
future: businessDetails,
|
future: businessDetails,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return Row(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 25.0),
|
||||||
|
child: CircularProgressIndicator(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
} else if (snapshot.hasError) {
|
} else if (snapshot.hasError) {
|
||||||
return Center(
|
return Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
@@ -80,7 +111,8 @@ class _BuildFavouriteBusinessesListState
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return const Center(child: Text('No business found'));
|
print(snapshot.data);
|
||||||
|
return SizedBox();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -25,16 +25,44 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
|||||||
TextEditingController();
|
TextEditingController();
|
||||||
final FocusNode searchFocusNode = FocusNode();
|
final FocusNode searchFocusNode = FocusNode();
|
||||||
late Future<List<BookmarkedBusiness>> boookmarkedBusinessListFuture;
|
late Future<List<BookmarkedBusiness>> boookmarkedBusinessListFuture;
|
||||||
|
List<BookmarkedBusiness> listBookmarkedBusinesses = [];
|
||||||
|
final ValueNotifier<List<BookmarkedBusiness>> searchBookmarkedBusinesses =
|
||||||
|
ValueNotifier([]);
|
||||||
Future<List<BookmarkedBusiness>> getAllBookmarkedBusinessesForUser() async {
|
Future<List<BookmarkedBusiness>> getAllBookmarkedBusinessesForUser() async {
|
||||||
String user_id = await SuperTokens.getUserId();
|
String user_id = await SuperTokens.getUserId();
|
||||||
return MihMzansiDirectoryServices().getAllUserBookmarkedBusiness(user_id);
|
return MihMzansiDirectoryServices().getAllUserBookmarkedBusiness(user_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void searchBookmarkedBusinessByName() {
|
||||||
|
if (businessSearchController.text.isEmpty) {
|
||||||
|
searchBookmarkedBusinesses.value = listBookmarkedBusinesses;
|
||||||
|
} else {
|
||||||
|
List<BookmarkedBusiness> temp = [];
|
||||||
|
for (var item in listBookmarkedBusinesses) {
|
||||||
|
if (item.business_name
|
||||||
|
.toLowerCase()
|
||||||
|
.contains(businessSearchController.text.toLowerCase())) {
|
||||||
|
temp.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
searchBookmarkedBusinesses.value = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
businessSearchController.removeListener(searchBookmarkedBusinessByName);
|
||||||
|
businessSearchController.dispose();
|
||||||
|
searchFocusNode.dispose();
|
||||||
|
searchBookmarkedBusinesses.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
boookmarkedBusinessListFuture = getAllBookmarkedBusinessesForUser();
|
boookmarkedBusinessListFuture = getAllBookmarkedBusinessesForUser();
|
||||||
|
businessSearchController.addListener(searchBookmarkedBusinessByName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -74,12 +102,17 @@ class _MihFavouriteBusinessesState extends State<MihFavouriteBusinesses> {
|
|||||||
);
|
);
|
||||||
} else if (snapshot.connectionState == ConnectionState.done) {
|
} else if (snapshot.connectionState == ConnectionState.done) {
|
||||||
if (snapshot.hasData && snapshot.data!.isNotEmpty) {
|
if (snapshot.hasData && snapshot.data!.isNotEmpty) {
|
||||||
List<BookmarkedBusiness> bookmarkedBusinesses =
|
listBookmarkedBusinesses = snapshot.data!;
|
||||||
snapshot.data!;
|
searchBookmarkedBusinessByName();
|
||||||
return BuildFavouriteBusinessesList(
|
return ValueListenableBuilder(
|
||||||
favouriteBusinesses: bookmarkedBusinesses,
|
valueListenable: searchBookmarkedBusinesses,
|
||||||
myLocation: widget.myLocation,
|
builder: (context, value, child) {
|
||||||
);
|
return BuildFavouriteBusinessesList(
|
||||||
|
favouriteBusinesses: value,
|
||||||
|
myLocation: widget.myLocation,
|
||||||
|
searchQuery: businessSearchController.text,
|
||||||
|
);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
Reference in New Issue
Block a user