Closed saharukkarim closed 1 year ago
Hello, we also use adaptive icons. Either you can provide your own adaptive icon or remove those icons. If you want to add your own adaptive icons, replace these files with your own:
If you want to remove adaptive icon, remove these files:
If you want to know more about adaptive icons, read more here: Adaptive Icons
Ok i will try now but if not working plz help me after
Property features show dobule dobule
Property features show dobule dobule
![Uploading Screenshot_20230110-175233.jpg…]()
Hello, Thanks for reporting this issue. Team will look into it and update solution here.
Hello
Hi @saharukkarim,
Thank you for reporting this issue. To fix this, go to packages/houzi_package/lib/pages/property_details_related_pages/features_list.dart
and look for initState()
method. Replace this method with the following piece of code:
@override
void initState() {
super.initState();
featuresList = widget.featuresList;
featuresList = featuresList.toSet().toList();
}
Replace this code?
No, you've top open features_list.dart
file. You can find at below path:
packages/houzi_package/lib/pages/property_details_related_pages/features_list.dart
Please Help
Pleas follow the documentation, you’re still using com.houzi.app
, it should be your own unique app id. Read documentation related to app identifier here: App Identifier
To fix your Android SDK issue, make sure to clean your project.
Open this file Project_HOME > android > app > build.gradle
Then change the sdk version to Android 33
Then create your app bundle, and upload.
Additionally, make sure you’ve integrated your own firebase, googlecloud, maps and places api keys as well. Follow the documentation step by step.
Hello can someone please help me, am still facing error to change the icon? It is still the demo icon and I can't change it. I have tried the comment shared above by using adaptive icon but still no luck?
Please explain why I can't build my app without getting your icon on my app, and also when I use the software to modify the app it removes the purchase code and the mobile login when exporting the configuration file.
I have done all that I see in your guide, and still doesn't work as it should. I need you to confirm how to generate my app with a working state. That your icon won't show on my app, and about the issues of the purchase code and the mobile login problem. And you need to rise the (ext.kotlin_version) to '1.6.21' also you need to add this (android:exported= "true") because it is giving errors.
Please give me a solution for this as soon as you can.
@Mrmontez please create new issue.
@AdilSoomro please check the new issue. Created as requested.
Can i add custom link in side drawer? If possible please help how can i do
Yes, refer to our docs here: Add Item to drawer
Essentially something you’ll do from hooks.dart
First import this line
import 'package:houzi_package/pages/app_settings_pages/web_page.dart';
go to Hooks.dart
file and look for getDrawerItems()
, replace it with this piece of code, paste it and modify according to your need
static getDrawerItems() {
DrawerHook drawerHook = (BuildContext context) {
DrawerItem drawerItem = DrawerItem(
sectionType: "hook",
title: "title", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.language_outlined, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://www.google.com/","Google"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 4, // if you want to specify the index in drawer
);
List<dynamic> drawerItemList = [drawerItem];
return drawerItemList;
};
return drawerHook;
}
Thanks its working. How to add multiple item in drawer?
Create multiple DrawerItem and add it to drawerItemList.
Can you provide sample code? i can't find DrawerItem and add it to drawerItemList
That is literally available in sample code above, third line.
I couldn't add multiple items in drawer
Share your code.
import 'package:flutter/material.dart'; import 'package:houzi_package/dataProvider/locale_provider.dart'; import 'package:houzi_package/houzi_main.dart'; import 'package:houzi_package/l10n/l10n.dart'; import 'package:houzi_package/models/article.dart'; import 'package:houzi_package/models/drawer_menu_item.dart'; import 'package:houzi_package/models/realtor_model.dart'; import 'package:houzi_package/pages/home_page_screens/home_elegant_related/related_widgets/home_elegant_sliver_app_bar.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/all_agents.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/settings_page.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/phone_sign_in_widgets/user_get_phone_number.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/user_profile.dart'; import 'package:houzi_package/pages/property_details_related_pages/pd_widgets_listing.dart'; import 'package:houzi_package/widgets/article_box_widgets/article_box_design.dart'; import 'package:houzi_package/widgets/explore_by_type_design_widgets/explore_by_type_design.dart'; import 'package:houzi_package/widgets/generic_settings_row_widget.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_drawer_widgets/home_screen_drawer_widget.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_realtors_related_widgets/home_screen_realtors_list.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_sliver_app_bar_widgets/search_by_id_widget.dart'; import 'package:houzi_package/pages/app_settings_pages/web_page.dart'; class IconHooks { static getHeaderMap() { Map<String, dynamic> map = { // "secretkey": "!@#%^&*()-+=", "secret_key": "", }; return map; }
static getPropertyDetailPageIconsMap() { Map<String, dynamic> _iconMap = { // "Air Conditioning": Icons.ac_unit_outlined, };
return _iconMap;
}
static getElegantHomeTermsIconMap() { Map<String, dynamic> _iconMap = { // "for-rent": Icons.vpn_key_outlined, };
return _iconMap;
} }
class CustomDrawerHooks { static getDrawerItems() { DrawerHook drawerHook = (BuildContext context) { DrawerItem drawerItem = DrawerItem( sectionType: "hook", title: "Loan Calculator", // Add your title name you want to show in drawer checkLogin: false, // if you want to check login first then make it true enable: true, icon: Icons.calculate, // You can choose any material icon onTap: () { // this is the example of on tap function if you want to open link in webview Navigator.push( context, MaterialPageRoute( builder: (context) => WebPage("https://my.iqibd.com/loan.html","Loan Calculator"), // pass the link and Webview appbar title in the first and second parameter respectively ), ); }, insertAt: 4, // if you want to specify the index in drawer
);
List<dynamic> drawerItemList = [drawerItem];
return drawerItemList;
};
return drawerHook;
}
}
class CustomFontsHooks { static getFontHook() { FontsHook fontsHook = (Locale locale) { // return "Ubuntu"; // return "Qwitcher_Grypen"; return ""; };
return fontsHook;
} }
class CustomItemDesignHooks { //provide your own design for property item static getPropertyItemHook() { PropertyItemHook propertyItemHook = (BuildContext context, Article article) { // return Container( // child: Center(child: Text(article.title)), // );
return null;
};
return propertyItemHook;
} //provide your own design for term item design in the app static getTermItemHook() { TermItemHook termItemHook = (List metaDataList) { return null; };
return termItemHook;
} //provide your own designs for agent item design in the app. static getAgentItemHook() { AgentItemHook agentItemHook = (Agent item) { // return Container( // height: 100, // padding: EdgeInsets.only( // bottom: 10, // ), // child: Card( // // shape: AppThemePreferences.roundedCorners(AppThemePreferences.realtorPageRoundedCornersRadius), // // elevation: AppThemePreferences.horizontalListForAgentsElevation, // child: InkWell( // borderRadius: const BorderRadius.all(Radius.circular(10)), // onTap: () { // // navigateToRealtorInformationDisplayPage( // // context: context, // // heroId: heroId, // // realtorType: tag == AGENTS_TAG ? AGENT_INFO : AGENCY_INFO, // // realtorInfo: tag == AGENTS_TAG ? {AGENT_DATA : item} : {AGENCY_DATA : item}, // // ); // }, // child: Container( // // width: , // // height: 135, // height: 100, // padding: const EdgeInsets.symmetric(horizontal: 10), // child: Text( // item.title, // textAlign: TextAlign.left, // maxLines: 1, // strutStyle: const StrutStyle(forceStrutHeight: true), // overflow: TextOverflow.ellipsis, // // style: AppThemePreferences().appTheme.homeScreenRealtorTitleTextStyle, // ), // ), // ), // ), // ); return null; }; return agentItemHook; } //provide your own design for agency item static getAgencyItemHook() { AgencyItemHook agencyItemHook = (Agency agency) { return null; };
return agencyItemHook;
} }
class CustomWidgetHooks { //provide your own design for each section of the property page //you can use the provided details in Article (property) static getWidgetHook() { PropertyPageWidgetsHook detailsHook = (BuildContext context, Article article, String hook) { if (hook == 'article_images') { return null; } else if (hook == 'article_title') { return null; } else if (hook == 'article_address') { return null; } else if (hook == 'article_status_price') { return null; } else if (hook == 'valued_features') { return null; } else if (hook == 'article_features_details') { return null; } else if (hook == 'article_features') { return null; } else if (hook == 'article_description') { return null; // return descriptionWidget(article); } else if (hook == 'article_address_info') { return null; } else if (hook == 'article_map') { return null; } else if (hook == 'article_floor_plans') { return null; } else if (hook == 'article_multi_units') { return null; } else if (hook == 'article_contact_information') { return null; } else if (hook == 'enquire_info') { return null; } else if (hook == 'setup_tour') { return null; } else if (hook == 'watch_video') { return null; } else if (hook == 'virtual_tour') { return null; } else if (hook == 'article_related_posts') { return null; } return null; };
return detailsHook;
} //a sample widget for description in property details page. static Widget descriptionWidget(Article article) { if (article != null) { String content = article.content; return content != null && content.isNotEmpty ? Container( padding: const EdgeInsets.fromLTRB(20, 5, 20, 0), child: Align( alignment: Alignment.centerLeft, child: Text( content, maxLines: 5, overflow: TextOverflow.ellipsis, textAlign: TextAlign.justify, ), ), ) : Container(); } else { return Container(); } }
// static Widget descriptionWidget(Article article) { // return Text( // article.content, // maxLines: 5, // overflow: TextOverflow.ellipsis, // textAlign: TextAlign.justify, // ); // } }
class CustomLanguageHooks { //add new language static getLanguageCodeAndName() { LanguageHook languageHook = () { /// Make sure to add LANGUAGE-CODE_localization.json is added in asset and path /// must be define in project level pubspec.yaml /// assets/localization/LANGUAGE-CODE_localization.json
Map<String,dynamic> russianLanguageMap = {
"languageName": "Russian",
"languageCode": "ru"
};
Map<String,dynamic> yourLanguageMap = {
"languageName": "YOUR-LANGUAGE-NAME", // Specify your language name
"languageCode": "YOUR-LANGUAGE-CODE" // Specify your language code
};
Map<String,dynamic> amhericLanguageMap = {
"languageName": "Amheric",
"languageCode": "am"
};
Map<String,dynamic> turkishLanguageMap = {
"languageName": "Turkish",
"languageCode": "tr"
};
List<dynamic> languageList = [russianLanguageMap,amhericLanguageMap, turkishLanguageMap];
return languageList;
};
return languageHook;
}
}
class DefaultHook {
static getDefaultLanguageHook() { DefaultLanguageCodeHook defaultLanguageCodeHook = () { /// Write here your default language code String defaultLanguage = "en"; return defaultLanguage; };
return defaultLanguageCodeHook;
}
static getDefaultCountryCodeHook() { DefaultCountryCodeHook defaultCountryCodeHook = () { /// return 2 Letter ISO Code to make it default country code for phone login return "PK"; };
return defaultCountryCodeHook;
} }
class HomeRightBarButtonWidgetHookClass { static getHomeRightBarButtonWidgetHookHook() { HomeRightBarButtonWidgetHook homeRightBarButtonWidgetHook = (context) {
Widget rightBarButtonHook = null;
// Widget rightBarButtonHook = SearchByIdWidget();
return rightBarButtonHook;
};
return homeRightBarButtonWidgetHook;
} }
class SettingsPageHook{ static getSettingsItemHook(){ SettingsHook settingsHook = (BuildContext context){ /// /// /// For info about adding Setting item visit below link: /// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_settings/
List<dynamic> settingsItemHookList = [
// Add menu item map here
];
return settingsItemHookList;
};
return settingsHook;
} }
class ProfilePageHook{ static getProfileItemHook(){ ProfileHook profileHook = (BuildContext context){ /// /// /// For info about adding Profile item visit below link: /// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_profile/
List<Widget> profileItemHookList = [
// Add menu item map here
];
return profileItemHookList;
};
return profileHook;
} }
Only share the code that you tried to add multiple items.
class CustomDrawerHooks {
static getDrawerItems() {
DrawerHook drawerHook = (BuildContext context) {
DrawerItem drawerItem = DrawerItem(
sectionType: "hook",
title: "Loan Calculator", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.calculate, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/loan.html","Loan Calculator"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 4, // if you want to specify the index in drawer
);
List<dynamic> drawerItemList = [drawerItem];
return drawerItemList;
};
return drawerHook;
}
}
I add one item but want to add multiple item
Just like you added one DrawerItem
to List, you'll add more items like below:
DrawerItem drawerItem = DrawerItem(
...
title: "Loan Calculator", // Add your title name you want to show in drawer
...
);
DrawerItem drawerItemSecond = DrawerItem(
...
title: "Second Item", // Add your title name you want to show in drawer
...
);
DrawerItem drawerItemThird = DrawerItem(
...
title: "Third Item", // Add your title name you want to show in drawer
...
);
List<dynamic> drawerItemList = [drawerItem, drawerItemSecond, drawerItemThird];
followup. did it solve your issue?
I keep getting this error after running houzimain.dart then it's stuck on splash screen closure call with mismatched arguments: function 'main' Tried calling: main()
Hello @Alphonseaaron please create your separate issue.
Can i hide this segment?
hello, open following file:
Project_HOME > packages > houzi_package > lib > common > constants.dart
and look for these variables and set to false
const bool SHOW_DEMO_CONFIGURATIONS = false;
bool SHOW_THEME_RELATED_SETTINGS = false;
Open following file:
Project_HOME > packages > houzi_package > lib > pages > home_screen_drawer_menu_pages > settings_page.dart
and modify the first line of the method exploreByTypeThemeDesignsWidget()
as below:
Widget exploreByTypeThemeDesignsWidget(BuildContext context, ItemDesignNotifier itemDesignNotifier){
return !SHOW_THEME_RELATED_SETTINGS ? Container() : genericSettingsWidget(
...
}
the change in first line is to insert !SHOW_THEME_RELATED_SETTINGS ? Container() :
after return keyword.
Hello Can i add bangla language in apps?
Yes, please follow Doc here:
Search by id not showing .Plz help
Please follow the doc:
Customize Home Right Bar Button Id Widget
It adds the search by id functionality via DefaultRightBarButtonIdWidget()
Please See it
Hello @saharukkarim,
Place the following code at the end of Hooks.dart
file. The imports should be at the top of the file.
import 'package:flutter/material.dart';
import 'package:houzi_package/common/constants.dart';
import 'package:houzi_package/files/app_preferences/app_preferences.dart';
import 'package:houzi_package/files/generic_methods/utility_methods.dart';
import 'package:houzi_package/pages/property_details_page.dart';
import 'package:houzi_package/pages/search_result.dart';
import 'package:houzi_package/widgets/dialog_box_widget.dart';
import 'package:houzi_package/widgets/generic_text_widget.dart';
class DefaultRightBarButtonIdWidget extends StatefulWidget {
const DefaultRightBarButtonIdWidget({Key? key}) : super(key: key);
@override
State<DefaultRightBarButtonIdWidget> createState() => _DefaultRightBarButtonIdWidgetState();
}
class _DefaultRightBarButtonIdWidgetState extends State<DefaultRightBarButtonIdWidget> {
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.end,
children: [
AppThemePreferences().appTheme.homeScreenTopBarSearchIcon!,
genericTextWidget(
UtilityMethods.getLocalizedString("id"),
style: AppThemePreferences().appTheme.searchByIdTextStyle,
),
],
),
onTap: () {
FocusScope.of(context).requestFocus(FocusNode());
_searchByPropertyIdDialog(context);
},
);
}
Future _searchByPropertyIdDialog(BuildContext context) {
GlobalKey<FormState> formKey = GlobalKey<FormState>();
String propertyId = "";
return dialogBoxWidget(
context,
title: UtilityMethods.getLocalizedString("search_property"),
textAlign: TextAlign.center,
content: Form(
key: formKey,
child: TextFormField(
textInputAction: TextInputAction.search,
// keyboardType: TextInputType.text,
// inputFormatters: <TextInputFormatter>[FilteringTextInputFormatter.digitsOnly,],
onFieldSubmitted: (text) {
if(formKey.currentState!.validate()){
searchByIdOnSubmit(context, propertyId);
}
},
onChanged: (text){
propertyId = text;
},
validator: (text){
if(text == null || text.isEmpty){
return UtilityMethods.getLocalizedString("this_field_cannot_be_empty");
}
return null;
},
decoration: InputDecoration(
hintText: UtilityMethods.getLocalizedString("search"),
focusedBorder: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(24.0)),
borderSide: BorderSide(color: AppThemePreferences().appTheme.primaryColor!),
),
enabledBorder: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(24.0)),
borderSide: BorderSide(color: Colors.grey[300]!),
),
suffixIcon: AppThemePreferences().appTheme.searchBarIcon,
contentPadding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
),
),
),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context),
child: genericTextWidget(UtilityMethods.getLocalizedString("cancel")),
),
TextButton(
child: genericTextWidget(UtilityMethods.getLocalizedString("go")),
onPressed: () {
if(formKey.currentState!.validate()){
searchByIdOnSubmit(context, propertyId);
}
},
),
],
);
}
void searchByIdOnSubmit(BuildContext context, String propertyId){
String heroId = propertyId + SINGLE;
if(UtilityMethods.isNumeric(propertyId)) {
int id = int.parse(propertyId);
Route route = MaterialPageRoute(
builder: (context) => PropertyDetailsPage(
propertyID: id,
heroId: heroId,
),
);
Navigator.pushReplacement(context, route);
} else {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => SearchResult(
searchRelatedData: UtilityMethods.isText(propertyId)
? {PROPERTY_KEYWORD : propertyId}
: {PROPERTY_UNIQUE_ID : propertyId},
searchPageListener: (Map<String, dynamic> map, String closeOption){
if(closeOption == CLOSE){
Navigator.of(context).pop();
}
},
),
),
);
}
}
}
I face error can you provide full code for hooks.dart
What's the error?
import 'package:flutter/material.dart'; import 'package:houzi_package/dataProvider/locale_provider.dart'; import 'package:houzi_package/houzi_main.dart'; import 'package:houzi_package/l10n/l10n.dart'; import 'package:houzi_package/models/article.dart'; import 'package:houzi_package/models/drawer_menu_item.dart'; import 'package:houzi_package/models/realtor_model.dart'; import 'package:houzi_package/pages/home_page_screens/home_elegant_related/related_widgets/home_elegant_sliver_app_bar.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/all_agents.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/settings_page.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/phone_sign_in_widgets/user_get_phone_number.dart'; import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/user_profile.dart'; import 'package:houzi_package/pages/property_details_related_pages/pd_widgets_listing.dart'; import 'package:houzi_package/widgets/article_box_widgets/article_box_design.dart'; import 'package:houzi_package/widgets/explore_by_type_design_widgets/explore_by_type_design.dart'; import 'package:houzi_package/widgets/generic_settings_row_widget.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_drawer_widgets/home_screen_drawer_widget.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_realtors_related_widgets/home_screen_realtors_list.dart'; import 'package:houzi_package/widgets/home_screen_widgets/home_screen_sliver_app_bar_widgets/search_by_id_widget.dart'; import 'package:houzi_package/pages/app_settings_pages/web_page.dart'; import 'package:flutter/material.dart'; import 'package:houzi_package/common/constants.dart'; import 'package:houzi_package/files/app_preferences/app_preferences.dart'; import 'package:houzi_package/files/generic_methods/utility_methods.dart'; import 'package:houzi_package/pages/property_details_page.dart'; import 'package:houzi_package/pages/search_result.dart'; import 'package:houzi_package/widgets/dialog_box_widget.dart'; import 'package:houzi_package/widgets/generic_text_widget.dart'; class IconHooks { static getHeaderMap() { Map<String, dynamic> map = { // "secretkey": "!@#%^&*()-+=", "secret_key": "", }; return map; }
static getPropertyDetailPageIconsMap() { Map<String, dynamic> _iconMap = { // "Air Conditioning": Icons.ac_unit_outlined, };
return _iconMap;
}
static getElegantHomeTermsIconMap() { Map<String, dynamic> _iconMap = { // "for-rent": Icons.vpn_key_outlined, };
return _iconMap;
} }
class CustomDrawerHooks { static getDrawerItems() { DrawerHook drawerHook = (BuildContext context) { DrawerItem drawerItem = DrawerItem( sectionType: "hook", title: "Loan Calculator", // Add your title name you want to show in drawer checkLogin: false, // if you want to check login first then make it true enable: true, icon: Icons.calculate, // You can choose any material icon onTap: () { // this is the example of on tap function if you want to open link in webview Navigator.push( context, MaterialPageRoute( builder: (context) => WebPage("https://iqibd.com/loan.html","Loan Calculator"), // pass the link and Webview appbar title in the first and second parameter respectively ), ); }, insertAt: 4, // if you want to specify the index in drawer
);
DrawerItem drawerItemSecond = DrawerItem(
sectionType: "hook",
title: "Area Converter", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.crop_rotate, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/areacon.html","Area Converter"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 5, // if you want to specify the index in drawer
);
DrawerItem drawerItemThird = DrawerItem(
sectionType: "hook",
title: "Plot Finder", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.near_me, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/plot.html","Plot Finder"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 6, // if you want to specify the index in drawer
);
List<dynamic> drawerItemList = [drawerItem, drawerItemSecond, drawerItemThird];
return drawerItemList;
};
return drawerHook;
}
}
class CustomFontsHooks { static getFontHook() { FontsHook fontsHook = (Locale locale) { // return "Ubuntu"; // return "Qwitcher_Grypen"; return ""; };
return fontsHook;
} }
class CustomItemDesignHooks { //provide your own design for property item static getPropertyItemHook() { PropertyItemHook propertyItemHook = (BuildContext context, Article article) { // return Container( // child: Center(child: Text(article.title)), // );
return null;
};
return propertyItemHook;
} //provide your own design for term item design in the app static getTermItemHook() { TermItemHook termItemHook = (List metaDataList) { return null; };
return termItemHook;
} //provide your own designs for agent item design in the app. static getAgentItemHook() { AgentItemHook agentItemHook = (Agent item) { // return Container( // height: 100, // padding: EdgeInsets.only( // bottom: 10, // ), // child: Card( // // shape: AppThemePreferences.roundedCorners(AppThemePreferences.realtorPageRoundedCornersRadius), // // elevation: AppThemePreferences.horizontalListForAgentsElevation, // child: InkWell( // borderRadius: const BorderRadius.all(Radius.circular(10)), // onTap: () { // // navigateToRealtorInformationDisplayPage( // // context: context, // // heroId: heroId, // // realtorType: tag == AGENTS_TAG ? AGENT_INFO : AGENCY_INFO, // // realtorInfo: tag == AGENTS_TAG ? {AGENT_DATA : item} : {AGENCY_DATA : item}, // // ); // }, // child: Container( // // width: , // // height: 135, // height: 100, // padding: const EdgeInsets.symmetric(horizontal: 10), // child: Text( // item.title, // textAlign: TextAlign.left, // maxLines: 1, // strutStyle: const StrutStyle(forceStrutHeight: true), // overflow: TextOverflow.ellipsis, // // style: AppThemePreferences().appTheme.homeScreenRealtorTitleTextStyle, // ), // ), // ), // ), // ); return null; }; return agentItemHook; } //provide your own design for agency item static getAgencyItemHook() { AgencyItemHook agencyItemHook = (Agency agency) { return null; };
return agencyItemHook;
} }
class CustomWidgetHooks { //provide your own design for each section of the property page //you can use the provided details in Article (property) static getWidgetHook() { PropertyPageWidgetsHook detailsHook = (BuildContext context, Article article, String hook) { if (hook == 'article_images') { return null; } else if (hook == 'article_title') { return null; } else if (hook == 'article_address') { return null; } else if (hook == 'article_status_price') { return null; } else if (hook == 'valued_features') { return null; } else if (hook == 'article_features_details') { return null; } else if (hook == 'article_features') { return null; } else if (hook == 'article_description') { return null; // return descriptionWidget(article); } else if (hook == 'article_address_info') { return null; } else if (hook == 'article_map') { return null; } else if (hook == 'article_floor_plans') { return null; } else if (hook == 'article_multi_units') { return null; } else if (hook == 'article_contact_information') { return null; } else if (hook == 'enquire_info') { return null; } else if (hook == 'setup_tour') { return null; } else if (hook == 'watch_video') { return null; } else if (hook == 'virtual_tour') { return null; } else if (hook == 'article_related_posts') { return null; } return null; };
return detailsHook;
} //a sample widget for description in property details page. static Widget descriptionWidget(Article article) { if (article != null) { String content = article.content; return content != null && content.isNotEmpty ? Container( padding: const EdgeInsets.fromLTRB(20, 5, 20, 0), child: Align( alignment: Alignment.centerLeft, child: Text( content, maxLines: 5, overflow: TextOverflow.ellipsis, textAlign: TextAlign.justify, ), ), ) : Container(); } else { return Container(); } }
// static Widget descriptionWidget(Article article) { // return Text( // article.content, // maxLines: 5, // overflow: TextOverflow.ellipsis, // textAlign: TextAlign.justify, // ); // } }
class CustomLanguageHooks { //add new language static getLanguageCodeAndName() { LanguageHook languageHook = () { /// Make sure to add LANGUAGE-CODE_localization.json is added in asset and path /// must be define in project level pubspec.yaml /// assets/localization/LANGUAGE-CODE_localization.json
Map<String,dynamic> russianLanguageMap = {
"languageName": "Russian",
"languageCode": "ru"
};
Map<String,dynamic> yourLanguageMap = {
"languageName": "YOUR-LANGUAGE-NAME", // Specify your language name
"languageCode": "YOUR-LANGUAGE-CODE" // Specify your language code
};
Map<String,dynamic> amhericLanguageMap = {
"languageName": "Amheric",
"languageCode": "am"
};
Map<String,dynamic> turkishLanguageMap = {
"languageName": "Turkish",
"languageCode": "tr"
};
List<dynamic> languageList = [russianLanguageMap,amhericLanguageMap, turkishLanguageMap];
return languageList;
};
return languageHook;
}
}
class DefaultHook {
static getDefaultLanguageHook() { DefaultLanguageCodeHook defaultLanguageCodeHook = () { /// Write here your default language code String defaultLanguage = "en"; return defaultLanguage; };
return defaultLanguageCodeHook;
}
static getDefaultCountryCodeHook() { DefaultCountryCodeHook defaultCountryCodeHook = () { /// return 2 Letter ISO Code to make it default country code for phone login return "PK"; };
return defaultCountryCodeHook;
} }
class HomeRightBarButtonWidgetHookClass { static getHomeRightBarButtonWidgetHookHook() { HomeRightBarButtonWidgetHook homeRightBarButtonWidgetHook = (context) {
Widget rightBarButtonHook = null;
// Widget rightBarButtonHook = SearchByIdWidget();
return rightBarButtonHook;
};
return homeRightBarButtonWidgetHook;
} }
class SettingsPageHook{ static getSettingsItemHook(){ SettingsHook settingsHook = (BuildContext context){ /// /// /// For info about adding Setting item visit below link: /// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_settings/
List<dynamic> settingsItemHookList = [
// Add menu item map here
];
return settingsItemHookList;
};
return settingsHook;
} }
class ProfilePageHook{ static getProfileItemHook(){ ProfileHook profileHook = (BuildContext context){ /// /// /// For info about adding Profile item visit below link: /// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_profile/
List<Widget> profileItemHookList = [
// Add menu item map here
];
return profileItemHookList;
};
return profileHook;
} }
Please add search by id in this code
import 'package:flutter/material.dart';
import 'package:houzi_package/dataProvider/locale_provider.dart';
import 'package:houzi_package/houzi_main.dart';
import 'package:houzi_package/l10n/l10n.dart';
import 'package:houzi_package/models/article.dart';
import 'package:houzi_package/models/drawer_menu_item.dart';
import 'package:houzi_package/models/realtor_model.dart';
import 'package:houzi_package/pages/home_page_screens/home_elegant_related/related_widgets/home_elegant_sliver_app_bar.dart';
import 'package:houzi_package/pages/home_screen_drawer_menu_pages/all_agents.dart';
import 'package:houzi_package/pages/home_screen_drawer_menu_pages/settings_page.dart';
import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/phone_sign_in_widgets/user_get_phone_number.dart';
import 'package:houzi_package/pages/home_screen_drawer_menu_pages/user_related/user_profile.dart';
import 'package:houzi_package/pages/property_details_related_pages/pd_widgets_listing.dart';
import 'package:houzi_package/widgets/article_box_widgets/article_box_design.dart';
import 'package:houzi_package/widgets/explore_by_type_design_widgets/explore_by_type_design.dart';
import 'package:houzi_package/widgets/generic_settings_row_widget.dart';
import 'package:houzi_package/widgets/home_screen_widgets/home_screen_drawer_widgets/home_screen_drawer_widget.dart';
import 'package:houzi_package/widgets/home_screen_widgets/home_screen_realtors_related_widgets/home_screen_realtors_list.dart';
import 'package:houzi_package/widgets/home_screen_widgets/home_screen_sliver_app_bar_widgets/default_right_bar_widget.dart';
import 'package:houzi_package/widgets/home_screen_widgets/home_screen_sliver_app_bar_widgets/search_by_id_widget.dart';
import 'package:houzi_package/pages/app_settings_pages/web_page.dart';
import 'package:flutter/material.dart';
import 'package:houzi_package/common/constants.dart';
import 'package:houzi_package/files/app_preferences/app_preferences.dart';
import 'package:houzi_package/files/generic_methods/utility_methods.dart';
import 'package:houzi_package/pages/property_details_page.dart';
import 'package:houzi_package/pages/search_result.dart';
import 'package:houzi_package/widgets/dialog_box_widget.dart';
import 'package:houzi_package/widgets/generic_text_widget.dart';
class IconHooks {
static getHeaderMap() {
Map<String, dynamic> map = {
// "secret_key": "!@#%^&*()_-+=",
"secret_key": "",
};
return map;
}
static getPropertyDetailPageIconsMap() {
Map<String, dynamic> _iconMap = {
// "Air Conditioning": Icons.ac_unit_outlined,
};
return _iconMap;
}
static getElegantHomeTermsIconMap() {
Map<String, dynamic> _iconMap = {
// "for-rent": Icons.vpn_key_outlined,
};
return _iconMap;
}
}
class CustomDrawerHooks {
static getDrawerItems() {
DrawerHook drawerHook = (BuildContext context) {
DrawerItem drawerItem = DrawerItem(
sectionType: "hook",
title: "Loan Calculator", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.calculate, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/loan.html","Loan Calculator"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 4, // if you want to specify the index in drawer
);
DrawerItem drawerItemSecond = DrawerItem(
sectionType: "hook",
title: "Area Converter", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.crop_rotate, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/areacon.html","Area Converter"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 5, // if you want to specify the index in drawer
);
DrawerItem drawerItemThird = DrawerItem(
sectionType: "hook",
title: "Plot Finder", // Add your title name you want to show in drawer
checkLogin: false, // if you want to check login first then make it true
enable: true,
icon: Icons.near_me, // You can choose any material icon
onTap: () { // this is the example of on tap function if you want to open link in webview
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebPage("https://iqibd.com/plot.html","Plot Finder"),
// pass the link and Webview appbar title in the first and second parameter respectively
),
);
},
insertAt: 6, // if you want to specify the index in drawer
);
List<dynamic> drawerItemList = [drawerItem, drawerItemSecond, drawerItemThird];
return drawerItemList;
};
return drawerHook;
}
}
class CustomFontsHooks {
static getFontHook() {
FontsHook fontsHook = (Locale locale) {
// return "Ubuntu";
// return "Qwitcher_Grypen";
return "";
};
return fontsHook;
}
}
class CustomItemDesignHooks {
//provide your own design for property item
static getPropertyItemHook() {
PropertyItemHook propertyItemHook =
(BuildContext context, Article article) {
// return Container(
// child: Center(child: Text(article.title)),
// );
return null;
};
return propertyItemHook;
}
//provide your own design for term item design in the app
static getTermItemHook() {
TermItemHook termItemHook = (List metaDataList) {
return null;
};
return termItemHook;
}
//provide your own designs for agent item design in the app.
static getAgentItemHook() {
AgentItemHook agentItemHook = (Agent item) {
// return Container(
// height: 100,
// padding: EdgeInsets.only(
// bottom: 10,
// ),
// child: Card(
// // shape: AppThemePreferences.roundedCorners(AppThemePreferences.realtorPageRoundedCornersRadius),
// // elevation: AppThemePreferences.horizontalListForAgentsElevation,
// child: InkWell(
// borderRadius: const BorderRadius.all(Radius.circular(10)),
// onTap: () {
// // navigateToRealtorInformationDisplayPage(
// // context: context,
// // heroId: heroId,
// // realtorType: tag == AGENTS_TAG ? AGENT_INFO : AGENCY_INFO,
// // realtorInfo: tag == AGENTS_TAG ? {AGENT_DATA : item} : {AGENCY_DATA : item},
// // );
// },
// child: Container(
// // width: ,
// // height: 135,
// height: 100,
// padding: const EdgeInsets.symmetric(horizontal: 10),
// child: Text(
// item.title,
// textAlign: TextAlign.left,
// maxLines: 1,
// strutStyle: const StrutStyle(forceStrutHeight: true),
// overflow: TextOverflow.ellipsis,
// // style: AppThemePreferences().appTheme.homeScreenRealtorTitleTextStyle,
// ),
// ),
// ),
// ),
// );
return null;
};
return agentItemHook;
}
//provide your own design for agency item
static getAgencyItemHook() {
AgencyItemHook agencyItemHook = (Agency agency) {
return null;
};
return agencyItemHook;
}
}
class CustomWidgetHooks {
//provide your own design for each section of the property page
//you can use the provided details in Article (property)
static getWidgetHook() {
PropertyPageWidgetsHook detailsHook =
(BuildContext context, Article article, String hook) {
if (hook == 'article_images') {
return null;
} else if (hook == 'article_title') {
return null;
} else if (hook == 'article_address') {
return null;
} else if (hook == 'article_status_price') {
return null;
} else if (hook == 'valued_features') {
return null;
} else if (hook == 'article_features_details') {
return null;
} else if (hook == 'article_features') {
return null;
} else if (hook == 'article_description') {
return null;
// return descriptionWidget(article);
} else if (hook == 'article_address_info') {
return null;
} else if (hook == 'article_map') {
return null;
} else if (hook == 'article_floor_plans') {
return null;
} else if (hook == 'article_multi_units') {
return null;
} else if (hook == 'article_contact_information') {
return null;
} else if (hook == 'enquire_info') {
return null;
} else if (hook == 'setup_tour') {
return null;
} else if (hook == 'watch_video') {
return null;
} else if (hook == 'virtual_tour') {
return null;
} else if (hook == 'article_related_posts') {
return null;
}
return null;
};
return detailsHook;
}
//a sample widget for description in property details page.
static Widget descriptionWidget(Article article) {
if (article != null) {
String content = article.content;
return content != null && content.isNotEmpty
? Container(
padding: const EdgeInsets.fromLTRB(20, 5, 20, 0),
child: Align(
alignment: Alignment.centerLeft,
child: Text(
content,
maxLines: 5,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.justify,
),
),
)
: Container();
} else {
return Container();
}
}
// static Widget descriptionWidget(Article article) {
// return Text(
// article.content,
// maxLines: 5,
// overflow: TextOverflow.ellipsis,
// textAlign: TextAlign.justify,
// );
// }
}
class CustomLanguageHooks {
//add new language
static getLanguageCodeAndName() {
LanguageHook languageHook = () {
/// Make sure to add LANGUAGE-CODE_localization.json is added in asset and path
/// must be define in project level pubspec.yaml
/// assets/localization/LANGUAGE-CODE_localization.json
Map<String,dynamic> russianLanguageMap = {
"languageName": "Russian",
"languageCode": "ru"
};
Map<String,dynamic> yourLanguageMap = {
"languageName": "YOUR-LANGUAGE-NAME", // Specify your language name
"languageCode": "YOUR-LANGUAGE-CODE" // Specify your language code
};
Map<String,dynamic> amhericLanguageMap = {
"languageName": "Amheric",
"languageCode": "am"
};
Map<String,dynamic> turkishLanguageMap = {
"languageName": "Turkish",
"languageCode": "tr"
};
List<dynamic> languageList = [russianLanguageMap,amhericLanguageMap, turkishLanguageMap];
return languageList;
};
return languageHook;
}
}
class DefaultHook {
static getDefaultLanguageHook() {
DefaultLanguageCodeHook defaultLanguageCodeHook = () {
/// Write here your default language code
String defaultLanguage = "en";
return defaultLanguage;
};
return defaultLanguageCodeHook;
}
static getDefaultCountryCodeHook() {
DefaultCountryCodeHook defaultCountryCodeHook = () {
/// return 2 Letter ISO Code to make it default country code for phone login
return "PK";
};
return defaultCountryCodeHook;
}
}
class HomeRightBarButtonWidgetHookClass {
static getHomeRightBarButtonWidgetHookHook() {
HomeRightBarButtonWidgetHook homeRightBarButtonWidgetHook = (context) {
Widget rightBarButtonHook = SearchByIdWidget();
// Widget rightBarButtonHook = SearchByIdWidget();
return rightBarButtonHook;
};
return homeRightBarButtonWidgetHook;
}
}
class SettingsPageHook{
static getSettingsItemHook(){
SettingsHook settingsHook = (BuildContext context){
///
///
/// For info about adding Setting item visit below link:
/// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_settings/
List<dynamic> settingsItemHookList = [
// Add menu item map here
];
return settingsItemHookList;
};
return settingsHook;
}
}
class ProfilePageHook{
static getProfileItemHook(){
ProfileHook profileHook = (BuildContext context){
///
///
/// For info about adding Profile item visit below link:
/// https://houzi-docs.booleanbites.com/hooks-widgets/add_item_profile/
List<Widget> profileItemHookList = [
// Add menu item map here
];
return profileItemHookList;
};
return profileHook;
}
}
class SearchByIdWidget extends StatefulWidget {
const SearchByIdWidget({Key? key}) : super(key: key);
@override
State<SearchByIdWidget> createState() => _SearchByIdWidgetState();
}
class _SearchByIdWidgetState extends State<SearchByIdWidget> {
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.end,
children: [
AppThemePreferences().appTheme.homeScreenTopBarSearchIcon!,
genericTextWidget(
UtilityMethods.getLocalizedString("id"),
style: AppThemePreferences().appTheme.searchByIdTextStyle,
),
],
),
onTap: () {
FocusScope.of(context).requestFocus(FocusNode());
_searchByPropertyIdDialog(context);
},
);
}
Future _searchByPropertyIdDialog(BuildContext context) {
GlobalKey<FormState> formKey = GlobalKey<FormState>();
String propertyId = "";
return dialogBoxWidget(
context,
title: UtilityMethods.getLocalizedString("search_property"),
textAlign: TextAlign.center,
content: Form(
key: formKey,
child: TextFormField(
textInputAction: TextInputAction.search,
// keyboardType: TextInputType.text,
// inputFormatters: <TextInputFormatter>[FilteringTextInputFormatter.digitsOnly,],
onFieldSubmitted: (text) {
if(formKey.currentState!.validate()){
searchByIdOnSubmit(context, propertyId);
}
},
onChanged: (text){
propertyId = text;
},
validator: (text){
if(text == null || text.isEmpty){
return UtilityMethods.getLocalizedString("this_field_cannot_be_empty");
}
return null;
},
decoration: InputDecoration(
hintText: UtilityMethods.getLocalizedString("search"),
focusedBorder: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(24.0)),
borderSide: BorderSide(color: AppThemePreferences().appTheme.primaryColor!),
),
enabledBorder: OutlineInputBorder(
borderRadius: const BorderRadius.all(Radius.circular(24.0)),
borderSide: BorderSide(color: Colors.grey[300]!),
),
suffixIcon: AppThemePreferences().appTheme.searchBarIcon,
contentPadding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
),
),
),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context),
child: genericTextWidget(UtilityMethods.getLocalizedString("cancel")),
),
TextButton(
child: genericTextWidget(UtilityMethods.getLocalizedString("go")),
onPressed: () {
if(formKey.currentState!.validate()){
searchByIdOnSubmit(context, propertyId);
}
},
),
],
);
}
void searchByIdOnSubmit(BuildContext context, String propertyId){
String heroId = propertyId + SINGLE;
if(UtilityMethods.isNumeric(propertyId)) {
int id = int.parse(propertyId);
Route route = MaterialPageRoute(
builder: (context) => PropertyDetailsPage(
propertyID: id,
heroId: heroId,
),
);
Navigator.pushReplacement(context, route);
} else {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => SearchResult(
searchRelatedData: UtilityMethods.isText(propertyId)
? {PROPERTY_KEYWORD : propertyId}
: {PROPERTY_UNIQUE_ID : propertyId},
searchPageListener: (Map<String, dynamic> map, String closeOption){
if(closeOption == CLOSE){
Navigator.of(context).pop();
}
},
),
),
);
}
}
}
@saharukkarim try this.
Brother i face this error
I will add my icon in mindmap floder in menully but when i build apk app icon is not changes