BUG: User search piture load
This commit is contained in:
@@ -8,11 +8,9 @@ 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_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';
|
||||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_business_info_card.dart';
|
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_business_info_card.dart';
|
||||||
// import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_business_info_card.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_location_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
|
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
|
||||||
@@ -342,9 +340,9 @@ class _PackageToolOneState extends State<PackageToolOne> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
MihPersonalProfilePreview(
|
// MihPersonalProfilePreview(
|
||||||
user: widget.user,
|
// user: widget.user,
|
||||||
),
|
// ),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
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,17 +1,16 @@
|
|||||||
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/app_user.dart';
|
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.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_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';
|
|
||||||
|
|
||||||
class MihPersonalProfilePreview extends StatefulWidget {
|
class MihPersonalProfilePreview extends StatefulWidget {
|
||||||
final AppUser user;
|
final AppUser user;
|
||||||
|
final ImageProvider<Object>? imageFile;
|
||||||
const MihPersonalProfilePreview({
|
const MihPersonalProfilePreview({
|
||||||
super.key,
|
super.key,
|
||||||
required this.user,
|
required this.user,
|
||||||
|
required this.imageFile,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -20,14 +19,9 @@ class MihPersonalProfilePreview extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MihPersonalProfilePreviewState extends State<MihPersonalProfilePreview> {
|
class _MihPersonalProfilePreviewState extends State<MihPersonalProfilePreview> {
|
||||||
late Future<String> futureImageUrl;
|
|
||||||
// String imageUrl = "";
|
|
||||||
PlatformFile? file;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
futureImageUrl = MihFileApi.getMinioFileUrl(widget.user.pro_pic_path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -35,41 +29,17 @@ class _MihPersonalProfilePreviewState extends State<MihPersonalProfilePreview> {
|
|||||||
double profilePictureWidth = 60;
|
double profilePictureWidth = 60;
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
FutureBuilder(
|
MihCircleAvatar(
|
||||||
future: futureImageUrl,
|
imageFile: widget.imageFile,
|
||||||
builder: (context, asyncSnapshot) {
|
width: profilePictureWidth,
|
||||||
if (asyncSnapshot.connectionState == ConnectionState.done &&
|
editable: false,
|
||||||
asyncSnapshot.hasData) {
|
fileNameController: TextEditingController(),
|
||||||
if (asyncSnapshot.requireData != "") {
|
userSelectedfile: null,
|
||||||
return MihCircleAvatar(
|
frameColor: MihColors.getSecondaryColor(
|
||||||
imageFile: NetworkImage(asyncSnapshot.requireData),
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
width: profilePictureWidth,
|
backgroundColor: MihColors.getPrimaryColor(
|
||||||
editable: false,
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
fileNameController: TextEditingController(),
|
onChange: () {},
|
||||||
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),
|
const SizedBox(width: 15),
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
@@ -57,8 +57,11 @@ class _BuildUserSearchResultsListState
|
|||||||
// vertical: 5,
|
// vertical: 5,
|
||||||
horizontal: 25,
|
horizontal: 25,
|
||||||
),
|
),
|
||||||
child:
|
child: MihPersonalProfilePreview(
|
||||||
MihPersonalProfilePreview(user: widget.userList[index]),
|
user: widget.userList[index],
|
||||||
|
imageFile: directoryProvider
|
||||||
|
.userSearchImages![widget.userList[index].app_id],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
||||||
directoryProvider
|
directoryProvider
|
||||||
.setSearchedBusinesses(searchedBusinesses: [], businessesImages: {});
|
.setSearchedBusinesses(searchedBusinesses: [], businessesImages: {});
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: []);
|
directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {});
|
||||||
directoryProvider.setSearchTerm(searchTerm: "");
|
directoryProvider.setSearchTerm(searchTerm: "");
|
||||||
setState(() {
|
setState(() {
|
||||||
mzansiSearchController.clear();
|
mzansiSearchController.clear();
|
||||||
@@ -80,7 +80,20 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
directoryProvider.searchTerm.isNotEmpty) {
|
directoryProvider.searchTerm.isNotEmpty) {
|
||||||
final userResults = await MihUserServices()
|
final userResults = await MihUserServices()
|
||||||
.searchUsers(profileProvider, directoryProvider.searchTerm, context);
|
.searchUsers(profileProvider, directoryProvider.searchTerm, context);
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: userResults);
|
Map<String, ImageProvider<Object>?> userImages = {};
|
||||||
|
String usernProPicUrl = "";
|
||||||
|
for (var user in userResults) {
|
||||||
|
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
||||||
|
usernProPicUrl = await MihFileApi.getMinioFileUrl(user.pro_pic_path);
|
||||||
|
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
||||||
|
userImages[user.app_id] =
|
||||||
|
usernProPicUrl != "" ? NetworkImage(usernProPicUrl) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
directoryProvider.setSearchedUsers(
|
||||||
|
searchedUsers: userResults,
|
||||||
|
userImages: userImages,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
List<Business>? businessSearchResults = [];
|
List<Business>? businessSearchResults = [];
|
||||||
if (directoryProvider.businessTypeFilter.isNotEmpty) {
|
if (directoryProvider.businessTypeFilter.isNotEmpty) {
|
||||||
@@ -127,7 +140,7 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
MihBusinessDetailsServices().fetchAllBusinessTypes();
|
MihBusinessDetailsServices().fetchAllBusinessTypes();
|
||||||
mzansiSearchController.text = "";
|
mzansiSearchController.text = "";
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: []);
|
directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
Map<String, ImageProvider<Object>?>? busSearchImages;
|
Map<String, ImageProvider<Object>?>? busSearchImages;
|
||||||
Business? selectedBusiness;
|
Business? selectedBusiness;
|
||||||
List<AppUser>? searchedUsers;
|
List<AppUser>? searchedUsers;
|
||||||
|
Map<String, ImageProvider<Object>?>? userSearchImages;
|
||||||
AppUser? selectedUser;
|
AppUser? selectedUser;
|
||||||
String searchTerm;
|
String searchTerm;
|
||||||
String businessTypeFilter;
|
String businessTypeFilter;
|
||||||
@@ -92,8 +93,12 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSearchedUsers({required List<AppUser> searchedUsers}) {
|
void setSearchedUsers({
|
||||||
|
required List<AppUser> searchedUsers,
|
||||||
|
required Map<String, ImageProvider<Object>?> userImages,
|
||||||
|
}) {
|
||||||
this.searchedUsers = searchedUsers;
|
this.searchedUsers = searchedUsers;
|
||||||
|
this.userSearchImages = userImages;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user