show list of favorites

This commit is contained in:
2025-07-29 13:09:33 +02:00
parent 499925327c
commit 739ab51e6b
2 changed files with 111 additions and 1 deletions

View File

@@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_objects/bookmarked_business.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_business_profile_preview.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
class BuildFavouriteBusinessesList extends StatefulWidget {
final List<BookmarkedBusiness> favouriteBusinesses;
final String? myLocation;
const BuildFavouriteBusinessesList({
super.key,
required this.favouriteBusinesses,
required this.myLocation,
});
@override
State<BuildFavouriteBusinessesList> createState() =>
_BuildFavouriteBusinessesListState();
}
class _BuildFavouriteBusinessesListState
extends State<BuildFavouriteBusinessesList> {
@override
Widget build(BuildContext context) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: widget.favouriteBusinesses.length,
separatorBuilder: (BuildContext context, index) {
return Divider(
color: Theme.of(context).colorScheme.secondary,
);
},
itemBuilder: (context, index) {
Future<Business?> businessDetails =
MihBusinessDetailsServices().getBusinessDetailsByBusinessId(
widget.favouriteBusinesses[index].business_id,
);
return FutureBuilder<Business?>(
future: businessDetails,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(
child: Text(
'Error: ${snapshot.error}',
style: TextStyle(color: Colors.red),
),
);
} else if (snapshot.hasData && snapshot.data != null) {
Business business = snapshot.data!;
return MihBusinessProfilePreview(
business: business, myLocation: widget.myLocation);
} else {
return const Center(child: Text('No business found'));
}
},
);
},
);
}
}