forked from yaso_meth/mih-project
fix state management
This commit is contained in:
@@ -31,6 +31,16 @@ class BusinessArguments {
|
||||
);
|
||||
}
|
||||
|
||||
class BusinessViewArguments {
|
||||
final Business business;
|
||||
final String? startUpSearch;
|
||||
|
||||
BusinessViewArguments(
|
||||
this.business,
|
||||
this.startUpSearch,
|
||||
);
|
||||
}
|
||||
|
||||
class HomeArguments {
|
||||
final AppUser signedInUser;
|
||||
final BusinessUser? businessUser;
|
||||
@@ -218,6 +228,16 @@ class MzansiAiArguments {
|
||||
);
|
||||
}
|
||||
|
||||
class MzansiDirectoryArguments {
|
||||
final String? startUpSearch;
|
||||
final bool personalSearch;
|
||||
|
||||
MzansiDirectoryArguments(
|
||||
this.startUpSearch,
|
||||
this.personalSearch,
|
||||
);
|
||||
}
|
||||
|
||||
class TestArguments {
|
||||
final AppUser user;
|
||||
final Business? business;
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_print_prevew.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/Example/package_test.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_notification_message.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/about_mih/about_mih.dart';
|
||||
@@ -122,13 +121,13 @@ class RouteGenerator {
|
||||
// }
|
||||
// break; // Use break and fall through to _errorRoute if argument type is wrong
|
||||
case AppRoutes.mzansiDirectory:
|
||||
// if (args is AuthArguments) {
|
||||
return MaterialPageRoute(
|
||||
settings: settings,
|
||||
builder: (_) => MzansiDirectory(),
|
||||
);
|
||||
// }
|
||||
// break;
|
||||
if (args is MzansiDirectoryArguments) {
|
||||
return MaterialPageRoute(
|
||||
settings: settings,
|
||||
builder: (_) => MzansiDirectory(arguments: args),
|
||||
);
|
||||
}
|
||||
break;
|
||||
case AppRoutes.notifications:
|
||||
if (args is NotificationArguments) {
|
||||
return MaterialPageRoute(
|
||||
@@ -188,10 +187,10 @@ class RouteGenerator {
|
||||
break;
|
||||
|
||||
case AppRoutes.businessProfileView:
|
||||
if (args is Business) {
|
||||
if (args is BusinessViewArguments) {
|
||||
return MaterialPageRoute(
|
||||
settings: settings,
|
||||
builder: (_) => MzansiBusinessProfileView(business: args),
|
||||
builder: (_) => MzansiBusinessProfileView(arguments: args),
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.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';
|
||||
|
||||
class BuildBusinessSearchResultsList extends StatefulWidget {
|
||||
final List<Business> businessList;
|
||||
final String myLocation;
|
||||
final String? startUpSearch;
|
||||
const BuildBusinessSearchResultsList({
|
||||
super.key,
|
||||
required this.businessList,
|
||||
required this.myLocation,
|
||||
required this.startUpSearch,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -37,7 +40,10 @@ class _BuildBusinessSearchResultsListState
|
||||
onTap: () {
|
||||
Navigator.of(context).pushNamed(
|
||||
'/business-profile/view',
|
||||
arguments: widget.businessList[index],
|
||||
arguments: BusinessViewArguments(
|
||||
widget.businessList[index],
|
||||
widget.startUpSearch,
|
||||
),
|
||||
);
|
||||
},
|
||||
splashColor: MzansiInnovationHub.of(context)!
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart';
|
||||
|
||||
class MzansiDirectory extends StatefulWidget {
|
||||
const MzansiDirectory({super.key});
|
||||
final MzansiDirectoryArguments arguments;
|
||||
const MzansiDirectory({
|
||||
super.key,
|
||||
required this.arguments,
|
||||
});
|
||||
|
||||
@override
|
||||
State<MzansiDirectory> createState() => _MzansiDirectoryState();
|
||||
@@ -32,7 +37,10 @@ class _MzansiDirectoryState extends State<MzansiDirectory> {
|
||||
|
||||
List<Widget> getToolBody() {
|
||||
List<Widget> toolBodies = [
|
||||
MihSearchMzansi(),
|
||||
MihSearchMzansi(
|
||||
startUpSearch: widget.arguments.startUpSearch,
|
||||
personalSearch: widget.arguments.personalSearch,
|
||||
),
|
||||
// MihContacts(),
|
||||
// MihFavouriteBusinesses(),
|
||||
];
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
|
||||
|
||||
@@ -21,7 +22,10 @@ class _MzansiDirectoryTileState extends State<MzansiDirectoryTile> {
|
||||
onTap: () {
|
||||
Navigator.of(context).pushNamed(
|
||||
'/mzansi-directory',
|
||||
// arguments: WalletArguments(widget.signedInUser, 0),
|
||||
arguments: MzansiDirectoryArguments(
|
||||
null, // startUpSearch
|
||||
true, // personalSearch
|
||||
),
|
||||
);
|
||||
},
|
||||
appName: "Mzansi Directory",
|
||||
|
||||
@@ -15,7 +15,13 @@ import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart';
|
||||
|
||||
class MihSearchMzansi extends StatefulWidget {
|
||||
const MihSearchMzansi({super.key});
|
||||
final String? startUpSearch;
|
||||
final bool personalSearch;
|
||||
const MihSearchMzansi({
|
||||
super.key,
|
||||
required this.startUpSearch,
|
||||
required this.personalSearch,
|
||||
});
|
||||
|
||||
@override
|
||||
State<MihSearchMzansi> createState() => _MihSearchMzansiState();
|
||||
@@ -24,7 +30,7 @@ class MihSearchMzansi extends StatefulWidget {
|
||||
class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
||||
final TextEditingController mzansiSearchController = TextEditingController();
|
||||
final FocusNode searchFocusNode = FocusNode();
|
||||
bool userSearch = true;
|
||||
late bool userSearch;
|
||||
Future<List<AppUser>?> futureUserSearchResults = Future.value();
|
||||
Future<List<Business>?> futureBusinessSearchResults = Future.value();
|
||||
late Future<Position?> futurePosition =
|
||||
@@ -41,6 +47,17 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
userSearch = widget.personalSearch;
|
||||
mzansiSearchController.text = widget.startUpSearch ?? "";
|
||||
if (userSearch) {
|
||||
futureUserSearchResults =
|
||||
MihUserServices().searchUsers(mzansiSearchController.text, context);
|
||||
} else {
|
||||
futureBusinessSearchResults = MihBusinessDetailsServices()
|
||||
.searchBusinesses(mzansiSearchController.text, context);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -246,6 +263,7 @@ class _MihSearchMzansiState extends State<MihSearchMzansi> {
|
||||
BuildBusinessSearchResultsList(
|
||||
businessList: snapshot.requireData!,
|
||||
myLocation: myLocation,
|
||||
startUpSearch: mzansiSearchController.text,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -12,6 +12,7 @@ import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class MihBusinessCard extends StatefulWidget {
|
||||
final Business business;
|
||||
final String? startUpSearch;
|
||||
// final String businessid;
|
||||
// final String businessName;
|
||||
// final String cellNumber;
|
||||
@@ -23,6 +24,7 @@ class MihBusinessCard extends StatefulWidget {
|
||||
const MihBusinessCard({
|
||||
super.key,
|
||||
required this.business,
|
||||
required this.startUpSearch,
|
||||
// required this.businessid,
|
||||
// required this.businessName,
|
||||
// required this.cellNumber,
|
||||
@@ -518,6 +520,7 @@ class _MihBusinessCardState extends State<MihBusinessCard> {
|
||||
businessReview: asyncSnapshot.data,
|
||||
screenWidth: width,
|
||||
readOnly: false,
|
||||
startUpSearch: widget.startUpSearch,
|
||||
);
|
||||
} else {
|
||||
return MihPackageAlert(
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:custom_rating_bar/custom_rating_bar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business_review.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart';
|
||||
@@ -21,12 +22,14 @@ class MihReviewBusinessWindow extends StatefulWidget {
|
||||
final BusinessReview? businessReview;
|
||||
final double screenWidth;
|
||||
final bool readOnly;
|
||||
final String? startUpSearch;
|
||||
const MihReviewBusinessWindow({
|
||||
super.key,
|
||||
required this.business,
|
||||
required this.businessReview,
|
||||
required this.screenWidth,
|
||||
required this.readOnly,
|
||||
required this.startUpSearch,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -172,7 +175,16 @@ class _MihReviewBusinessWindowState extends State<MihReviewBusinessWindow> {
|
||||
.then((statusCode) {
|
||||
Navigator.of(context).pop(); //Remove loading dialog
|
||||
if (statusCode == 200) {
|
||||
Navigator.of(context).pop();
|
||||
Navigator.of(context).pop(); //pop window
|
||||
Navigator.of(context).pop(); //pop business profile
|
||||
Navigator.of(context).pop(); //pop directory
|
||||
Navigator.of(context).pushNamed(
|
||||
'/mzansi-directory',
|
||||
arguments: MzansiDirectoryArguments(
|
||||
widget.startUpSearch, // startUpSearch
|
||||
false, // personalSearch
|
||||
),
|
||||
);
|
||||
MihAlertServices().successAlert(
|
||||
"Successfully Updated Review!",
|
||||
"Your review has successfully been updated and will now appear under the business.",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
|
||||
@@ -7,10 +7,10 @@ import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profi
|
||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart';
|
||||
|
||||
class MzansiBusinessProfileView extends StatefulWidget {
|
||||
final Business business;
|
||||
final BusinessViewArguments arguments;
|
||||
const MzansiBusinessProfileView({
|
||||
super.key,
|
||||
required this.business,
|
||||
required this.arguments,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -68,8 +68,11 @@ class _MzansiBusinessProfileViewState extends State<MzansiBusinessProfileView> {
|
||||
|
||||
List<Widget> getToolBody() {
|
||||
List<Widget> toolBodies = [
|
||||
MihBusinessDetailsView(business: widget.business),
|
||||
MihBusinessReviews(business: widget.business),
|
||||
MihBusinessDetailsView(
|
||||
business: widget.arguments.business,
|
||||
startUpSearch: widget.arguments.startUpSearch,
|
||||
),
|
||||
MihBusinessReviews(business: widget.arguments.business),
|
||||
];
|
||||
return toolBodies;
|
||||
}
|
||||
|
||||
@@ -690,6 +690,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
|
||||
// : 0,
|
||||
// website: widget.arguments.business!.website,
|
||||
business: widget.arguments.business!,
|
||||
startUpSearch: null,
|
||||
width: width,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -11,9 +11,11 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
|
||||
class MihBusinessDetailsView extends StatefulWidget {
|
||||
final Business business;
|
||||
final String? startUpSearch;
|
||||
const MihBusinessDetailsView({
|
||||
super.key,
|
||||
required this.business,
|
||||
required this.startUpSearch,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -163,6 +165,7 @@ class _MihBusinessDetailsViewState extends State<MihBusinessDetailsView> {
|
||||
width: 700,
|
||||
child: MihBusinessCard(
|
||||
business: widget.business,
|
||||
startUpSearch: widget.startUpSearch,
|
||||
// businessid: widget.business.business_id,
|
||||
// businessName: widget.business.Name,
|
||||
// cellNumber: widget.business.contact_no,
|
||||
|
||||
@@ -39,6 +39,7 @@ class _MihBusinessReviewsState extends State<MihBusinessReviews> {
|
||||
businessReview: businessReview,
|
||||
screenWidth: width,
|
||||
readOnly: true,
|
||||
startUpSearch: null,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user