BUG: Image loading of businesses
This commit is contained in:
@@ -8,7 +8,6 @@ import 'package:mzansi_innovation_hub/main.dart';
|
|||||||
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
|
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_objects/business.dart';
|
import 'package:mzansi_innovation_hub/mih_objects/business.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart';
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_business_profile_preview.dart';
|
|
||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_personal_profile_preview.dart';
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_personal_profile_preview.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart';
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||||
@@ -393,16 +392,16 @@ class _PackageToolOneState extends State<PackageToolOne> {
|
|||||||
child: Center(child: Text("Location unavailable")),
|
child: Center(child: Text("Location unavailable")),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
final myLocation = asyncSnapshot.data
|
// final myLocation = asyncSnapshot.data
|
||||||
.toString()
|
// .toString()
|
||||||
.replaceAll("Latitude: ", "")
|
// .replaceAll("Latitude: ", "")
|
||||||
.replaceAll("Longitude: ", "");
|
// .replaceAll("Longitude: ", "");
|
||||||
print("My Location is this: $myLocation");
|
// print("My Location is this: $myLocation");
|
||||||
return widget.business != null
|
// return widget.business != null
|
||||||
? MihBusinessProfilePreview(
|
// ? MihBusinessProfilePreview(
|
||||||
business: widget.business!,
|
// business: widget.business!,
|
||||||
)
|
// )
|
||||||
: Text("NoBusiness Data");
|
return Text("NoBusiness Data");
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
// const SizedBox(height: 10),
|
// const SizedBox(height: 10),
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
import 'package:file_picker/file_picker.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_objects/business.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class MihBusinessProfilePreview extends StatefulWidget {
|
||||||
|
final Business business;
|
||||||
|
const MihBusinessProfilePreview({
|
||||||
|
super.key,
|
||||||
|
required this.business,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<MihBusinessProfilePreview> createState() =>
|
||||||
|
_MihBusinessProfilePreviewState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
||||||
|
late Future<String> futureImageUrl;
|
||||||
|
PlatformFile? file;
|
||||||
|
|
||||||
|
String calculateDistance(MzansiDirectoryProvider directoryProvider) {
|
||||||
|
try {
|
||||||
|
double distanceInKm = MIHLocationAPI().getDistanceInMeaters(
|
||||||
|
directoryProvider.userLocation, widget.business.gps_location) /
|
||||||
|
1000;
|
||||||
|
return "${distanceInKm.toStringAsFixed(2)} km";
|
||||||
|
} catch (error) {
|
||||||
|
print(error);
|
||||||
|
return "*.** km";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
double profilePictureWidth = 60;
|
||||||
|
return Consumer<MzansiDirectoryProvider>(
|
||||||
|
builder: (BuildContext context, MzansiDirectoryProvider directoryProvider,
|
||||||
|
Widget? child) {
|
||||||
|
return Row(
|
||||||
|
children: [
|
||||||
|
FutureBuilder(
|
||||||
|
future: MihFileApi.getMinioFileUrl(widget.business.logo_path),
|
||||||
|
builder: (context, asyncSnapshot) {
|
||||||
|
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
||||||
|
asyncSnapshot.hasData) {
|
||||||
|
if (asyncSnapshot.requireData != "") {
|
||||||
|
return MihCircleAvatar(
|
||||||
|
imageFile: NetworkImage(asyncSnapshot.requireData),
|
||||||
|
width: profilePictureWidth,
|
||||||
|
editable: false,
|
||||||
|
fileNameController: TextEditingController(),
|
||||||
|
userSelectedfile: file,
|
||||||
|
frameColor: MihColors.getSecondaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||||
|
"Dark"),
|
||||||
|
backgroundColor: MihColors.getPrimaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||||
|
"Dark"),
|
||||||
|
onChange: () {},
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Icon(
|
||||||
|
MihIcons.iDontKnow,
|
||||||
|
size: profilePictureWidth,
|
||||||
|
color: MihColors.getSecondaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||||
|
"Dark"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Icon(
|
||||||
|
MihIcons.mihRing,
|
||||||
|
size: profilePictureWidth,
|
||||||
|
color: MihColors.getSecondaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||||
|
"Dark"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
const SizedBox(width: 15),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
widget.business.Name,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 18,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
widget.business.type,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 15,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
directoryProvider.userPosition != null
|
||||||
|
? calculateDistance(directoryProvider)
|
||||||
|
: "0.00 km",
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 10,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:file_picker/file_picker.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.dart';
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_objects/business.dart';
|
import 'package:mzansi_innovation_hub/mih_objects/business.dart';
|
||||||
@@ -6,15 +5,16 @@ import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.d
|
|||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart';
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart';
|
import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class MihBusinessProfilePreview extends StatefulWidget {
|
class MihBusinessProfilePreview extends StatefulWidget {
|
||||||
final Business business;
|
final Business business;
|
||||||
|
final ImageProvider<Object>? imageFile;
|
||||||
const MihBusinessProfilePreview({
|
const MihBusinessProfilePreview({
|
||||||
super.key,
|
super.key,
|
||||||
required this.business,
|
required this.business,
|
||||||
|
required this.imageFile,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -23,9 +23,6 @@ class MihBusinessProfilePreview extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
||||||
late Future<String> futureImageUrl;
|
|
||||||
PlatformFile? file;
|
|
||||||
|
|
||||||
String calculateDistance(MzansiDirectoryProvider directoryProvider) {
|
String calculateDistance(MzansiDirectoryProvider directoryProvider) {
|
||||||
try {
|
try {
|
||||||
double distanceInKm = MIHLocationAPI().getDistanceInMeaters(
|
double distanceInKm = MIHLocationAPI().getDistanceInMeaters(
|
||||||
@@ -51,45 +48,23 @@ class _MihBusinessProfilePreviewState extends State<MihBusinessProfilePreview> {
|
|||||||
Widget? child) {
|
Widget? child) {
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
FutureBuilder(
|
widget.imageFile == null
|
||||||
future: MihFileApi.getMinioFileUrl(widget.business.logo_path),
|
? Icon(
|
||||||
builder: (context, asyncSnapshot) {
|
MihIcons.iDontKnow,
|
||||||
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
size: profilePictureWidth,
|
||||||
asyncSnapshot.hasData) {
|
)
|
||||||
if (asyncSnapshot.requireData != "") {
|
: MihCircleAvatar(
|
||||||
return MihCircleAvatar(
|
imageFile: widget.imageFile,
|
||||||
imageFile: NetworkImage(asyncSnapshot.requireData),
|
width: profilePictureWidth,
|
||||||
width: profilePictureWidth,
|
editable: false,
|
||||||
editable: false,
|
fileNameController: TextEditingController(),
|
||||||
fileNameController: TextEditingController(),
|
userSelectedfile: null,
|
||||||
userSelectedfile: file,
|
frameColor: MihColors.getSecondaryColor(
|
||||||
frameColor: MihColors.getSecondaryColor(
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
backgroundColor: MihColors.getPrimaryColor(
|
||||||
"Dark"),
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
backgroundColor: MihColors.getPrimaryColor(
|
onChange: () {},
|
||||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
),
|
||||||
"Dark"),
|
|
||||||
onChange: () {},
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return Icon(
|
|
||||||
MihIcons.iDontKnow,
|
|
||||||
size: profilePictureWidth,
|
|
||||||
color: MihColors.getSecondaryColor(
|
|
||||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
|
||||||
"Dark"),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return Icon(
|
|
||||||
MihIcons.mihRing,
|
|
||||||
size: profilePictureWidth,
|
|
||||||
color: MihColors.getSecondaryColor(
|
|
||||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
|
||||||
"Dark"),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
const SizedBox(width: 15),
|
const SizedBox(width: 15),
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ class _BuildBusinessSearchResultsListState
|
|||||||
),
|
),
|
||||||
child: MihBusinessProfilePreview(
|
child: MihBusinessProfilePreview(
|
||||||
business: widget.businessList[index],
|
business: widget.businessList[index],
|
||||||
|
imageFile: directoryProvider.busSearchImages![
|
||||||
|
widget.businessList[index].business_id],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ class _BuildFavouriteBusinessesListState
|
|||||||
),
|
),
|
||||||
child: MihBusinessProfilePreview(
|
child: MihBusinessProfilePreview(
|
||||||
business: widget.favouriteBusinesses[index]!,
|
business: widget.favouriteBusinesses[index]!,
|
||||||
|
imageFile: directoryProvider.favBusImages![
|
||||||
|
widget.favouriteBusinesses[index]!.business_id],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tool
|
|||||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart';
|
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_data_helper_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_data_helper_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@@ -40,10 +41,10 @@ class _MzansiDirectoryState extends State<MzansiDirectory> {
|
|||||||
mzansiProfileProvider,
|
mzansiProfileProvider,
|
||||||
);
|
);
|
||||||
await getFavouriteBusinesses();
|
await getFavouriteBusinesses();
|
||||||
initialiseGPSLocation();
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_isLoadingInitialData = false;
|
_isLoadingInitialData = false;
|
||||||
});
|
});
|
||||||
|
initialiseGPSLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> initialiseGPSLocation() async {
|
Future<void> initialiseGPSLocation() async {
|
||||||
@@ -63,14 +64,22 @@ class _MzansiDirectoryState extends State<MzansiDirectory> {
|
|||||||
directoryProvider,
|
directoryProvider,
|
||||||
);
|
);
|
||||||
List<Business> favBus = [];
|
List<Business> favBus = [];
|
||||||
|
Map<String, ImageProvider<Object>?> favBusImages = {};
|
||||||
|
String businessLogoUrl = "";
|
||||||
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
||||||
await MihBusinessDetailsServices()
|
await MihBusinessDetailsServices()
|
||||||
.getBusinessDetailsByBusinessId(bus.business_id)
|
.getBusinessDetailsByBusinessId(bus.business_id)
|
||||||
.then((business) {
|
.then((business) async {
|
||||||
favBus.add(business!);
|
favBus.add(business!);
|
||||||
|
businessLogoUrl = await MihFileApi.getMinioFileUrl(business.logo_path);
|
||||||
|
favBusImages[business.business_id] =
|
||||||
|
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
directoryProvider.setFavouriteBusinesses(businesses: favBus);
|
directoryProvider.setFavouriteBusinesses(
|
||||||
|
businesses: favBus,
|
||||||
|
businessesImages: favBusImages,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/bui
|
|||||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart';
|
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
@@ -40,7 +41,6 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
late Future<List<String>> availableBusinessTypes;
|
late Future<List<String>> availableBusinessTypes;
|
||||||
bool filterOn = false;
|
bool filterOn = false;
|
||||||
bool loadingSearchResults = false;
|
bool loadingSearchResults = false;
|
||||||
|
|
||||||
Future<void> swapPressed(MzansiProfileProvider profileProvider,
|
Future<void> swapPressed(MzansiProfileProvider profileProvider,
|
||||||
MzansiDirectoryProvider directoryProvider) async {
|
MzansiDirectoryProvider directoryProvider) async {
|
||||||
directoryProvider.setPersonalSearch(!directoryProvider.personalSearch);
|
directoryProvider.setPersonalSearch(!directoryProvider.personalSearch);
|
||||||
@@ -58,7 +58,8 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
||||||
directoryProvider.setSearchedBusinesses(searchedBusinesses: []);
|
directoryProvider
|
||||||
|
.setSearchedBusinesses(searchedBusinesses: [], businessesImages: {});
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: []);
|
directoryProvider.setSearchedUsers(searchedUsers: []);
|
||||||
directoryProvider.setSearchTerm(searchTerm: "");
|
directoryProvider.setSearchTerm(searchTerm: "");
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -91,8 +92,19 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
.searchBusinesses(directoryProvider.searchTerm,
|
.searchBusinesses(directoryProvider.searchTerm,
|
||||||
directoryProvider.businessTypeFilter, context);
|
directoryProvider.businessTypeFilter, context);
|
||||||
}
|
}
|
||||||
|
Map<String, ImageProvider<Object>?> busImages = {};
|
||||||
|
String businessLogoUrl = "";
|
||||||
|
for (var bus in businessSearchResults) {
|
||||||
|
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
||||||
|
businessLogoUrl = await MihFileApi.getMinioFileUrl(bus.logo_path);
|
||||||
|
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
||||||
|
busImages[bus.business_id] =
|
||||||
|
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
|
}
|
||||||
directoryProvider.setSearchedBusinesses(
|
directoryProvider.setSearchedBusinesses(
|
||||||
searchedBusinesses: businessSearchResults);
|
searchedBusinesses: businessSearchResults,
|
||||||
|
businessesImages: busImages,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
loadingSearchResults = false;
|
loadingSearchResults = false;
|
||||||
@@ -280,8 +292,6 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
|
|
||||||
Widget displayBusinessSearchResults(
|
Widget displayBusinessSearchResults(
|
||||||
MzansiDirectoryProvider directoryProvider) {
|
MzansiDirectoryProvider directoryProvider) {
|
||||||
KenLogger.success(
|
|
||||||
"Searched Businesses: ${directoryProvider.searchedBusinesses}");
|
|
||||||
if (directoryProvider.searchedBusinesses == null || loadingSearchResults) {
|
if (directoryProvider.searchedBusinesses == null || loadingSearchResults) {
|
||||||
return Center(
|
return Center(
|
||||||
child: const Mihloadingcircle(),
|
child: const Mihloadingcircle(),
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart
|
|||||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
@@ -37,14 +38,22 @@ class _MihAddBookmarkAlertState extends State<MihAddBookmarkAlert> {
|
|||||||
directoryProvider,
|
directoryProvider,
|
||||||
);
|
);
|
||||||
List<Business> favBus = [];
|
List<Business> favBus = [];
|
||||||
|
Map<String, ImageProvider<Object>?> favBusImages = {};
|
||||||
|
String businessLogoUrl = "";
|
||||||
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
||||||
await MihBusinessDetailsServices()
|
await MihBusinessDetailsServices()
|
||||||
.getBusinessDetailsByBusinessId(bus.business_id)
|
.getBusinessDetailsByBusinessId(bus.business_id)
|
||||||
.then((business) {
|
.then((business) async {
|
||||||
favBus.add(business!);
|
favBus.add(business!);
|
||||||
|
businessLogoUrl = await MihFileApi.getMinioFileUrl(business.logo_path);
|
||||||
|
favBusImages[business.business_id] =
|
||||||
|
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
directoryProvider.setFavouriteBusinesses(businesses: favBus);
|
directoryProvider.setFavouriteBusinesses(
|
||||||
|
businesses: favBus,
|
||||||
|
businessesImages: favBusImages,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> addBookmark(
|
Future<void> addBookmark(
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profi
|
|||||||
import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart';
|
import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:redacted/redacted.dart';
|
import 'package:redacted/redacted.dart';
|
||||||
@@ -573,8 +574,17 @@ class _MihBusinessCardState extends State<MihBusinessCard> {
|
|||||||
businessSearchResults = await MihBusinessDetailsServices()
|
businessSearchResults = await MihBusinessDetailsServices()
|
||||||
.searchBusinesses(directoryProvider.searchTerm,
|
.searchBusinesses(directoryProvider.searchTerm,
|
||||||
directoryProvider.businessTypeFilter, context);
|
directoryProvider.businessTypeFilter, context);
|
||||||
|
Map<String, ImageProvider<Object>?> busImages = {};
|
||||||
|
String businessLogoUrl = "";
|
||||||
|
for (var bus in businessSearchResults) {
|
||||||
|
businessLogoUrl = await MihFileApi.getMinioFileUrl(bus.logo_path);
|
||||||
|
busImages[bus.business_id] =
|
||||||
|
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
|
}
|
||||||
directoryProvider.setSearchedBusinesses(
|
directoryProvider.setSearchedBusinesses(
|
||||||
searchedBusinesses: businessSearchResults);
|
searchedBusinesses: businessSearchResults,
|
||||||
|
businessesImages: busImages,
|
||||||
|
);
|
||||||
setState(() {
|
setState(() {
|
||||||
_businessReviewFuture = getUserReview();
|
_businessReviewFuture = getUserReview();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.da
|
|||||||
import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart';
|
import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
@@ -42,14 +43,22 @@ class _MihDeleteBookmarkAlertState extends State<MihDeleteBookmarkAlert> {
|
|||||||
directoryProvider,
|
directoryProvider,
|
||||||
);
|
);
|
||||||
List<Business> favBus = [];
|
List<Business> favBus = [];
|
||||||
|
Map<String, ImageProvider<Object>?> favBusImages = {};
|
||||||
|
String businessLogoUrl = "";
|
||||||
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
for (var bus in directoryProvider.bookmarkedBusinesses) {
|
||||||
await MihBusinessDetailsServices()
|
await MihBusinessDetailsServices()
|
||||||
.getBusinessDetailsByBusinessId(bus.business_id)
|
.getBusinessDetailsByBusinessId(bus.business_id)
|
||||||
.then((business) {
|
.then((business) async {
|
||||||
favBus.add(business!);
|
favBus.add(business!);
|
||||||
|
businessLogoUrl = await MihFileApi.getMinioFileUrl(business.logo_path);
|
||||||
|
favBusImages[business.business_id] =
|
||||||
|
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
directoryProvider.setFavouriteBusinesses(businesses: favBus);
|
directoryProvider.setFavouriteBusinesses(
|
||||||
|
businesses: favBus,
|
||||||
|
businessesImages: favBusImages,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> deleteBookmark(int idbookmarked_businesses) async {
|
Future<void> deleteBookmark(int idbookmarked_businesses) async {
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
bool personalSearch;
|
bool personalSearch;
|
||||||
List<BookmarkedBusiness> bookmarkedBusinesses = [];
|
List<BookmarkedBusiness> bookmarkedBusinesses = [];
|
||||||
List<Business>? favouriteBusinessesList;
|
List<Business>? favouriteBusinessesList;
|
||||||
|
Map<String, ImageProvider<Object>?>? favBusImages;
|
||||||
List<Business>? searchedBusinesses;
|
List<Business>? searchedBusinesses;
|
||||||
|
Map<String, ImageProvider<Object>?>? busSearchImages;
|
||||||
Business? selectedBusiness;
|
Business? selectedBusiness;
|
||||||
List<AppUser>? searchedUsers;
|
List<AppUser>? searchedUsers;
|
||||||
AppUser? selectedUser;
|
AppUser? selectedUser;
|
||||||
@@ -67,13 +69,21 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFavouriteBusinesses({required List<Business> businesses}) {
|
void setFavouriteBusinesses({
|
||||||
|
required List<Business> businesses,
|
||||||
|
required Map<String, ImageProvider<Object>?> businessesImages,
|
||||||
|
}) {
|
||||||
favouriteBusinessesList = businesses;
|
favouriteBusinessesList = businesses;
|
||||||
|
favBusImages = businessesImages;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSearchedBusinesses({required List<Business> searchedBusinesses}) {
|
void setSearchedBusinesses({
|
||||||
|
required List<Business> searchedBusinesses,
|
||||||
|
required Map<String, ImageProvider<Object>?> businessesImages,
|
||||||
|
}) {
|
||||||
this.searchedBusinesses = searchedBusinesses;
|
this.searchedBusinesses = searchedBusinesses;
|
||||||
|
busSearchImages = businessesImages;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user