QOL: Data display load Mzansi Direct pt2
This commit is contained in:
@@ -3,14 +3,17 @@ 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_config/mih_colors.dart';
|
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||||
|
import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart';
|
||||||
|
|
||||||
class MihPersonalProfilePreview extends StatefulWidget {
|
class MihPersonalProfilePreview extends StatefulWidget {
|
||||||
final AppUser user;
|
final AppUser user;
|
||||||
final ImageProvider<Object>? imageFile;
|
final ImageProvider<Object>? imageFile;
|
||||||
|
final bool loading;
|
||||||
const MihPersonalProfilePreview({
|
const MihPersonalProfilePreview({
|
||||||
super.key,
|
super.key,
|
||||||
required this.user,
|
required this.user,
|
||||||
required this.imageFile,
|
required this.imageFile,
|
||||||
|
required this.loading,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -29,18 +32,32 @@ class _MihPersonalProfilePreviewState extends State<MihPersonalProfilePreview> {
|
|||||||
double profilePictureWidth = 60;
|
double profilePictureWidth = 60;
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
MihCircleAvatar(
|
widget.loading
|
||||||
imageFile: widget.imageFile,
|
? Icon(
|
||||||
width: profilePictureWidth,
|
MihIcons.mihRing,
|
||||||
editable: false,
|
size: profilePictureWidth,
|
||||||
fileNameController: TextEditingController(),
|
color: MihColors.getSecondaryColor(
|
||||||
userSelectedfile: null,
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
frameColor: MihColors.getSecondaryColor(
|
)
|
||||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
: widget.imageFile == null
|
||||||
backgroundColor: MihColors.getPrimaryColor(
|
? Icon(
|
||||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
MihIcons.iDontKnow,
|
||||||
onChange: () {},
|
size: profilePictureWidth,
|
||||||
),
|
color: MihColors.getSecondaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
|
)
|
||||||
|
: MihCircleAvatar(
|
||||||
|
imageFile: widget.imageFile,
|
||||||
|
width: profilePictureWidth,
|
||||||
|
editable: false,
|
||||||
|
fileNameController: TextEditingController(),
|
||||||
|
userSelectedfile: null,
|
||||||
|
frameColor: MihColors.getSecondaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
|
backgroundColor: MihColors.getPrimaryColor(
|
||||||
|
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||||
|
onChange: () {},
|
||||||
|
),
|
||||||
const SizedBox(width: 15),
|
const SizedBox(width: 15),
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.dart';
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
@@ -58,13 +59,32 @@ class _BuildBusinessSearchResultsListState
|
|||||||
// vertical: 5,
|
// vertical: 5,
|
||||||
horizontal: 25,
|
horizontal: 25,
|
||||||
),
|
),
|
||||||
child: MihBusinessProfilePreview(
|
child: FutureBuilder(
|
||||||
business: widget.businessList[index],
|
future: directoryProvider.busSearchImagesUrl![
|
||||||
imageFile: directoryProvider.busSearchImages![
|
widget.businessList[index].business_id],
|
||||||
widget.businessList[index].business_id],
|
builder: (context, asyncSnapshot) {
|
||||||
loading: false,
|
ImageProvider<Object>? imageFile;
|
||||||
//To Do
|
bool loading = true;
|
||||||
),
|
if (asyncSnapshot.connectionState ==
|
||||||
|
ConnectionState.done) {
|
||||||
|
loading = false;
|
||||||
|
if (asyncSnapshot.hasData) {
|
||||||
|
imageFile = asyncSnapshot.requireData != ""
|
||||||
|
? CachedNetworkImageProvider(
|
||||||
|
asyncSnapshot.requireData)
|
||||||
|
: null;
|
||||||
|
} else {
|
||||||
|
imageFile = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageFile = null;
|
||||||
|
}
|
||||||
|
return MihBusinessProfilePreview(
|
||||||
|
business: widget.businessList[index],
|
||||||
|
imageFile: imageFile,
|
||||||
|
loading: loading,
|
||||||
|
);
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.dart';
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
@@ -57,11 +58,32 @@ class _BuildUserSearchResultsListState
|
|||||||
// vertical: 5,
|
// vertical: 5,
|
||||||
horizontal: 25,
|
horizontal: 25,
|
||||||
),
|
),
|
||||||
child: MihPersonalProfilePreview(
|
child: FutureBuilder(
|
||||||
user: widget.userList[index],
|
future: directoryProvider
|
||||||
imageFile: directoryProvider
|
.userSearchImagesUrl![widget.userList[index].app_id],
|
||||||
.userSearchImages![widget.userList[index].app_id],
|
builder: (context, asyncSnapshot) {
|
||||||
),
|
ImageProvider<Object>? imageFile;
|
||||||
|
bool loading = true;
|
||||||
|
if (asyncSnapshot.connectionState ==
|
||||||
|
ConnectionState.done) {
|
||||||
|
loading = false;
|
||||||
|
if (asyncSnapshot.hasData) {
|
||||||
|
imageFile = asyncSnapshot.requireData != ""
|
||||||
|
? CachedNetworkImageProvider(
|
||||||
|
asyncSnapshot.requireData)
|
||||||
|
: null;
|
||||||
|
} else {
|
||||||
|
imageFile = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageFile = null;
|
||||||
|
}
|
||||||
|
return MihPersonalProfilePreview(
|
||||||
|
user: widget.userList[index],
|
||||||
|
imageFile: imageFile,
|
||||||
|
loading: loading,
|
||||||
|
);
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:cached_network_image/cached_network_image.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:ken_logger/ken_logger.dart';
|
import 'package:ken_logger/ken_logger.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.dart';
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
@@ -60,8 +59,8 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
|
|
||||||
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
void clearAll(MzansiDirectoryProvider directoryProvider) {
|
||||||
directoryProvider
|
directoryProvider
|
||||||
.setSearchedBusinesses(searchedBusinesses: [], businessesImages: {});
|
.setSearchedBusinesses(searchedBusinesses: [], businessesImagesUrl: {});
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {});
|
directoryProvider.setSearchedUsers(searchedUsers: [], userImagesUrl: {});
|
||||||
directoryProvider.setSearchTerm(searchTerm: "");
|
directoryProvider.setSearchTerm(searchTerm: "");
|
||||||
setState(() {
|
setState(() {
|
||||||
mzansiSearchController.clear();
|
mzansiSearchController.clear();
|
||||||
@@ -81,20 +80,21 @@ 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);
|
||||||
Map<String, ImageProvider<Object>?> userImages = {};
|
Map<String, Future<String>> userImages = {};
|
||||||
String usernProPicUrl = "";
|
Future<String> usernProPicUrl;
|
||||||
for (var user in userResults) {
|
for (var user in userResults) {
|
||||||
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
||||||
usernProPicUrl = await MihFileApi.getMinioFileUrl(user.pro_pic_path);
|
usernProPicUrl = MihFileApi.getMinioFileUrl(user.pro_pic_path);
|
||||||
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
KenLogger.success("Business Logo Path: ${user.pro_pic_path}");
|
||||||
userImages[user.app_id] = usernProPicUrl != ""
|
userImages[user.app_id] = usernProPicUrl;
|
||||||
? CachedNetworkImageProvider(usernProPicUrl)
|
// != ""
|
||||||
: null;
|
// ? CachedNetworkImageProvider(usernProPicUrl)
|
||||||
|
// : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
directoryProvider.setSearchedUsers(
|
directoryProvider.setSearchedUsers(
|
||||||
searchedUsers: userResults,
|
searchedUsers: userResults,
|
||||||
userImages: userImages,
|
userImagesUrl: userImages,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
List<Business>? businessSearchResults = [];
|
List<Business>? businessSearchResults = [];
|
||||||
@@ -107,19 +107,20 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
.searchBusinesses(directoryProvider.searchTerm,
|
.searchBusinesses(directoryProvider.searchTerm,
|
||||||
directoryProvider.businessTypeFilter, context);
|
directoryProvider.businessTypeFilter, context);
|
||||||
}
|
}
|
||||||
Map<String, ImageProvider<Object>?> busImages = {};
|
Map<String, Future<String>> busImagesUrl = {};
|
||||||
String businessLogoUrl = "";
|
Future<String> businessLogoUrl;
|
||||||
for (var bus in businessSearchResults) {
|
for (var bus in businessSearchResults) {
|
||||||
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
||||||
businessLogoUrl = await MihFileApi.getMinioFileUrl(bus.logo_path);
|
businessLogoUrl = MihFileApi.getMinioFileUrl(bus.logo_path);
|
||||||
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
KenLogger.success("Business Logo Path: ${bus.logo_path}");
|
||||||
busImages[bus.business_id] = businessLogoUrl != ""
|
busImagesUrl[bus.business_id] = businessLogoUrl;
|
||||||
? CachedNetworkImageProvider(businessLogoUrl)
|
// != ""
|
||||||
: null;
|
// ? CachedNetworkImageProvider(businessLogoUrl)
|
||||||
|
// : null;
|
||||||
}
|
}
|
||||||
directoryProvider.setSearchedBusinesses(
|
directoryProvider.setSearchedBusinesses(
|
||||||
searchedBusinesses: businessSearchResults,
|
searchedBusinesses: businessSearchResults,
|
||||||
businessesImages: busImages,
|
businessesImagesUrl: busImagesUrl,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -143,7 +144,10 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
|||||||
MihBusinessDetailsServices().fetchAllBusinessTypes();
|
MihBusinessDetailsServices().fetchAllBusinessTypes();
|
||||||
mzansiSearchController.text = "";
|
mzansiSearchController.text = "";
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||||
directoryProvider.setSearchedUsers(searchedUsers: [], userImages: {});
|
directoryProvider.setSearchedUsers(
|
||||||
|
searchedUsers: [],
|
||||||
|
userImagesUrl: {},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -574,16 +574,18 @@ 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 = {};
|
// Map<String, ImageProvider<Object>?> busImages = {};
|
||||||
String businessLogoUrl = "";
|
Map<String, Future<String>> busImagesUrl = {};
|
||||||
|
// String businessLogoUrl = "";
|
||||||
|
Future<String> businessLogoUrl;
|
||||||
for (var bus in businessSearchResults) {
|
for (var bus in businessSearchResults) {
|
||||||
businessLogoUrl = await MihFileApi.getMinioFileUrl(bus.logo_path);
|
businessLogoUrl = MihFileApi.getMinioFileUrl(bus.logo_path);
|
||||||
busImages[bus.business_id] =
|
busImagesUrl[bus.business_id] = businessLogoUrl;
|
||||||
businessLogoUrl != "" ? NetworkImage(businessLogoUrl) : null;
|
// != "" ? NetworkImage(businessLogoUrl) : null;
|
||||||
}
|
}
|
||||||
directoryProvider.setSearchedBusinesses(
|
directoryProvider.setSearchedBusinesses(
|
||||||
searchedBusinesses: businessSearchResults,
|
searchedBusinesses: businessSearchResults,
|
||||||
businessesImages: busImages,
|
businessesImagesUrl: busImagesUrl,
|
||||||
);
|
);
|
||||||
setState(() {
|
setState(() {
|
||||||
_businessReviewFuture = getUserReview();
|
_businessReviewFuture = getUserReview();
|
||||||
|
|||||||
@@ -11,13 +11,12 @@ 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;
|
|
||||||
Map<String, Future<String>>? favBusImagesUrl;
|
Map<String, Future<String>>? favBusImagesUrl;
|
||||||
List<Business>? searchedBusinesses;
|
List<Business>? searchedBusinesses;
|
||||||
Map<String, ImageProvider<Object>?>? busSearchImages;
|
Map<String, Future<String>>? busSearchImagesUrl;
|
||||||
Business? selectedBusiness;
|
Business? selectedBusiness;
|
||||||
List<AppUser>? searchedUsers;
|
List<AppUser>? searchedUsers;
|
||||||
Map<String, ImageProvider<Object>?>? userSearchImages;
|
Map<String, Future<String>>? userSearchImagesUrl;
|
||||||
AppUser? selectedUser;
|
AppUser? selectedUser;
|
||||||
String searchTerm;
|
String searchTerm;
|
||||||
String businessTypeFilter;
|
String businessTypeFilter;
|
||||||
@@ -74,20 +73,18 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
void setFavouriteBusinesses({
|
void setFavouriteBusinesses({
|
||||||
required List<Business> businesses,
|
required List<Business> businesses,
|
||||||
required Map<String, Future<String>> businessesImagesUrl,
|
required Map<String, Future<String>> businessesImagesUrl,
|
||||||
// required Map<String, ImageProvider<Object>?> businessesImages,
|
|
||||||
}) {
|
}) {
|
||||||
favouriteBusinessesList = businesses;
|
favouriteBusinessesList = businesses;
|
||||||
// favBusImages = businessesImages;
|
|
||||||
favBusImagesUrl = businessesImagesUrl;
|
favBusImagesUrl = businessesImagesUrl;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSearchedBusinesses({
|
void setSearchedBusinesses({
|
||||||
required List<Business> searchedBusinesses,
|
required List<Business> searchedBusinesses,
|
||||||
required Map<String, ImageProvider<Object>?> businessesImages,
|
required Map<String, Future<String>> businessesImagesUrl,
|
||||||
}) {
|
}) {
|
||||||
this.searchedBusinesses = searchedBusinesses;
|
this.searchedBusinesses = searchedBusinesses;
|
||||||
busSearchImages = businessesImages;
|
busSearchImagesUrl = businessesImagesUrl;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,10 +95,10 @@ class MzansiDirectoryProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
void setSearchedUsers({
|
void setSearchedUsers({
|
||||||
required List<AppUser> searchedUsers,
|
required List<AppUser> searchedUsers,
|
||||||
required Map<String, ImageProvider<Object>?> userImages,
|
required Map<String, Future<String>> userImagesUrl,
|
||||||
}) {
|
}) {
|
||||||
this.searchedUsers = searchedUsers;
|
this.searchedUsers = searchedUsers;
|
||||||
this.userSearchImages = userImages;
|
this.userSearchImagesUrl = userImagesUrl;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user