Merge branch 'bottom_nav_pharmacy' into 'development'

Bottom nav pharmacy

See merge request Cloud_Solution/diplomatic-quarter!478
merge-update-with-lab-changes
Mohammad Aljammal 4 years ago
commit c0cf2f71a2

@ -0,0 +1,17 @@
import 'package:flutter/cupertino.dart';
class PharmacyPagesViewModel with ChangeNotifier {
int currentTab = 0;
PageController pageController;
PharmacyPagesViewModel() {
pageController = PageController(keepPage: true);
}
changeCurrentTab(int tab) {
if (pageController.hasClients) {
currentTab = tab;
pageController.jumpToPage(tab);
notifyListeners();
}
}
}

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/analytics/google-analytics.dart'; import 'package:diplomaticquarterapp/analytics/google-analytics.dart';
import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
@ -19,7 +20,6 @@ import 'locator.dart';
import 'pages/pharmacies/compare-list.dart'; import 'pages/pharmacies/compare-list.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
FirebaseApp defaultApp = await Firebase.initializeApp(); FirebaseApp defaultApp = await Firebase.initializeApp();
@ -34,7 +34,6 @@ class MyApp extends StatefulWidget {
} }
class _MyApp extends State<MyApp> { class _MyApp extends State<MyApp> {
@override @override
void initState() { void initState() {
// ProjectViewModel projectProvider; // ProjectViewModel projectProvider;
@ -52,7 +51,6 @@ class _MyApp extends State<MyApp> {
.showNow(title: "Payload", subtitle: payload, payload: payload); .showNow(title: "Payload", subtitle: payload, payload: payload);
}); });
// final themeNotifier = Provider.of<ThemeNotifier>(context); // final themeNotifier = Provider.of<ThemeNotifier>(context);
precacheImage(AssetImage('assets/images/powerd-by.jpg'), context); precacheImage(AssetImage('assets/images/powerd-by.jpg'), context);
return LayoutBuilder( return LayoutBuilder(
@ -62,6 +60,9 @@ class _MyApp extends State<MyApp> {
SizeConfig().init(constraints, orientation); SizeConfig().init(constraints, orientation);
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider<PharmacyPagesViewModel>(
create: (context) => PharmacyPagesViewModel(),
),
ChangeNotifierProvider<ProjectViewModel>( ChangeNotifierProvider<ProjectViewModel>(
create: (context) => ProjectViewModel(), create: (context) => ProjectViewModel(),
), ),
@ -85,9 +86,7 @@ class _MyApp extends State<MyApp> {
], ],
child: Consumer<ProjectViewModel>( child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp( builder: (context, projectProvider, child) => MaterialApp(
navigatorObservers: [ navigatorObservers: [GAnalytics.shared.navObserver()],
GAnalytics.shared.navObserver()
],
navigatorKey: locator<NavigationService>().navigatorKey, navigatorKey: locator<NavigationService>().navigatorKey,
showSemanticsDebugger: false, showSemanticsDebugger: false,
title: 'Diplomatic Quarter App', title: 'Diplomatic Quarter App',

@ -11,6 +11,7 @@ import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/pr
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_pharmacy_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_pharmacy_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -23,7 +24,7 @@ class FinalProductsPage extends StatefulWidget {
final String id; final String id;
final int productType; // 1 : default, 2 : manufacturer , 3 : recently viewed final int productType; // 1 : default, 2 : manufacturer , 3 : recently viewed
AuthenticatedUserObject authenticatedUserObject = AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>(); locator<AuthenticatedUserObject>();
FinalProductsPage({this.id, this.productType = 1}); FinalProductsPage({this.id, this.productType = 1});
@ -79,9 +80,10 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
allowAny: true, allowAny: true,
builder: (BuildContext context, PharmacyCategoriseViewModel model, builder: (BuildContext context, PharmacyCategoriseViewModel model,
Widget child) => Widget child) =>
PharmacyAppScaffold( AppScaffold(
isPharmacy: true,
appBarTitle: appBarTitle, appBarTitle: appBarTitle,
isBottomBar: false, isBottomBar: true,
isShowAppBar: true, isShowAppBar: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
isShowDecPage: false, isShowDecPage: false,
@ -91,8 +93,6 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
//Expanded widget heree if nassery
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -613,30 +613,51 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
], ],
), ),
), ),
widget.authenticatedUserObject
widget.authenticatedUserObject.isLogin .isLogin
? Container( ? Container(
child: IconButton( child: IconButton(
icon: Icon(Icons.shopping_cart, icon: Icon(
size: 18, Icons
color: Colors.blue,), .shopping_cart,
onPressed: () async { size: 18,
if(model.finalProducts[index].rxMessage == null){ color:
GifLoaderDialogUtils.showMyDialog(context); Colors.blue,
await addToCartFunction(1, model.finalProducts[index].id); ),
GifLoaderDialogUtils.hideDialog(context); onPressed:
Navigator.push( () async {
context, if (model
FadePage(page: CartOrderPage())); .finalProducts[
} index]
else{ .rxMessage ==
AppToast.showErrorToast(message: TranslationBase.of(context).needPrescription); null) {
} GifLoaderDialogUtils
.showMyDialog(
context);
await addToCartFunction(
1,
model
.finalProducts[
index]
.id);
GifLoaderDialogUtils
.hideDialog(
context);
Navigator.push(
context,
FadePage(
page:
CartOrderPage()));
} else {
AppToast.showErrorToast(
message: TranslationBase.of(
context)
.needPrescription);
}
// //
} }),
)
), : Container(),
):Container(),
], ],
), ),
), ),

@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart'; import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/product-detail.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/product-detail.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-page/cart-order-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-page/cart-order-page.dart';
@ -15,36 +16,46 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/pharmacy/bottom_nav_pharmacy_bar.dart'; import 'package:diplomaticquarterapp/widgets/pharmacy/bottom_nav_pharmacy_bar.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../locator.dart'; import '../../locator.dart';
class LandingPagePharmacy extends StatefulWidget { class LandingPagePharmacy extends StatefulWidget {
final int currentTab;
const LandingPagePharmacy({Key key, this.currentTab = 0}) : super(key: key);
@override @override
_LandingPagePharmacyState createState() => _LandingPagePharmacyState(); _LandingPagePharmacyState createState() => _LandingPagePharmacyState();
} }
class _LandingPagePharmacyState extends State<LandingPagePharmacy> { class _LandingPagePharmacyState extends State<LandingPagePharmacy> {
ProjectViewModel projectProvider;
int currentTab = 0; int currentTab = 0;
PageController pageController; PageController pageController;
ProjectViewModel projectProvider;
_changeCurrentTab(int tab) {
setState(() {
currentTab = tab;
pageController.jumpToPage(tab);
});
}
void initState() { void initState() {
super.initState(); super.initState();
locator<PharmacyModuleService>().manufacturerList = []; locator<PharmacyModuleService>().manufacturerList = [];
locator<PharmacyModuleService>().bestSellerProducts = []; locator<PharmacyModuleService>().bestSellerProducts = [];
locator<PharmacyModuleService>().lastVisitedProducts = []; locator<PharmacyModuleService>().lastVisitedProducts = [];
pageController =
PageController(keepPage: true, initialPage: widget.currentTab);
setState(() {
currentTab = widget.currentTab;
});
}
pageController = PageController(keepPage: true); changeCurrentTab(int tab) {
if (pageController.hasClients) {
setState(() {
currentTab = tab;
pageController.jumpToPage(tab);
});
}
} }
@override @override
@ -53,75 +64,13 @@ class _LandingPagePharmacyState extends State<LandingPagePharmacy> {
onWillPop: () async { onWillPop: () async {
return false; return false;
}, },
child: Scaffold( child: AppScaffold(
appBar: currentTab != 4 && currentTab != 3 isBottomBar: true,
? AppBar(
backgroundColor: Color(0xff5AB145),
elevation: 0,
title: Container(
height: MediaQuery.of(context).size.height * 0.056,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5.0),
color: Colors.white,
),
child: InkWell(
child: Padding(
padding: EdgeInsets.all(5.0),
child: Row(
//crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Icon(Icons.search, size: 25.0),
SizedBox(
width: 15.0,
),
Texts(
TranslationBase.of(context).searchProductHere,
fontSize: 13,
)
],
),
),
onTap: () {
Navigator.push(
context,
FadePage(page: SearchProductsPage()),
);
},
),
),
leading: Builder(
builder: (BuildContext context) {
return InkWell(
onTap: () {
setState(() {
currentTab = 0;
pageController.jumpToPage(0);
});
},
child: Container(
height: 2.0,
width: 10.0,
child: Image.asset(
'assets/images/pharmacy_logo.png',
),
),
);
},
),
actions: [
IconButton(
// iconSize: 70,
icon: Image.asset(
'assets/images/new-design/qr-code.png',
),
onPressed: _scanQrAndGetProduct //do something,
)
],
centerTitle: true,
)
: null,
extendBody: false, extendBody: false,
isShowDecPage: false,
isMainPharmacyPages: true,
currentTab: currentTab,
changeCurrentTab: changeCurrentTab,
body: PageView( body: PageView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
controller: pageController, controller: pageController,
@ -129,41 +78,13 @@ class _LandingPagePharmacyState extends State<LandingPagePharmacy> {
PharmacyPage(), PharmacyPage(),
PharmacyCategorisePage(), PharmacyCategorisePage(),
PharmacyProfilePage(), PharmacyProfilePage(),
CartOrderPage(changeTab: _changeCurrentTab), CartOrderPage(changeTab: changeCurrentTab),
], ],
), ),
bottomNavigationBar: BottomNavPharmacyBar(
changeIndex: _changeCurrentTab,
index: currentTab,
),
), ),
); );
} }
void _scanQrAndGetProduct() async {
try {
String result = await BarcodeScanner.scan();
try {
String barcode = result;
GifLoaderDialogUtils.showMyDialog(context);
await BaseAppClient()
.getPharmacy("$GET_PHARMACY_PRODUCTs_BY_SKU$barcode",
onSuccess: (dynamic response, int statusCode) {
print(response);
var product = PharmacyProduct.fromJson(response["products"][0]);
GifLoaderDialogUtils.hideDialog(context);
Navigator.push(context, FadePage(page: ProductDetailPage(product)));
}, onFailure: (String error, int statusCode) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: "Product not found");
});
} catch (apiEx) {
AppToast.showErrorToast(
message: "Something went wrong, please try again");
}
} catch (barcodeEx) {}
}
getText(currentTab) { getText(currentTab) {
switch (currentTab) { switch (currentTab) {
case 2: case 2:

@ -16,6 +16,7 @@ import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_pharmacy_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_pharmacy_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/entity_checkbox_list.dart'; import 'package:diplomaticquarterapp/widgets/others/entity_checkbox_list.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -26,13 +27,12 @@ import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/pages/sub_categories_modalsheet.dart'; import 'package:diplomaticquarterapp/pages/sub_categories_modalsheet.dart';
import 'base/base_view.dart'; import 'base/base_view.dart';
class ParentCategorisePage extends StatefulWidget { class ParentCategorisePage extends StatefulWidget {
String id; String id;
String titleName; String titleName;
AuthenticatedUserObject authenticatedUserObject = AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>(); locator<AuthenticatedUserObject>();
ParentCategorisePage({this.id, this.titleName}); ParentCategorisePage({this.id, this.titleName});
@ -46,9 +46,11 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
String titleName; String titleName;
final dynamic productID; final dynamic productID;
_ParentCategorisePageState({
this.id,
_ParentCategorisePageState({this.id, this.titleName, this.productID,}); this.titleName,
this.productID,
});
Map<String, bool> values = {'huusam': false, 'ali': false, 'noor': false}; Map<String, bool> values = {'huusam': false, 'ali': false, 'noor': false};
bool checkedBrands = false; bool checkedBrands = false;
@ -75,9 +77,10 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
allowAny: true, allowAny: true,
builder: (BuildContext context, PharmacyCategoriseViewModel model, builder: (BuildContext context, PharmacyCategoriseViewModel model,
Widget child) => Widget child) =>
PharmacyAppScaffold( AppScaffold(
isPharmacy: true,
appBarTitle: titleName, appBarTitle: titleName,
isBottomBar: false, isBottomBar: true,
isShowAppBar: true, isShowAppBar: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
isShowDecPage: false, isShowDecPage: false,
@ -139,8 +142,7 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
page: SubCategoriseModalsheet( page: SubCategoriseModalsheet(
// id: model.categorise[0].id, // id: model.categorise[0].id,
// titleName: model.categorise[0].name, // titleName: model.categorise[0].name,
) )),
),
); );
// showModalBottomSheet<void>( // showModalBottomSheet<void>(
// isScrollControlled: true, // isScrollControlled: true,
@ -348,13 +350,13 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
width: 10.0, width: 10.0,
), ),
Texts( Texts(
TranslationBase.of(
TranslationBase.of(context).refine, context)
.refine,
// 'Refine', // 'Refine',
fontWeight: fontWeight:
FontWeight.w600, FontWeight.w600,
), ),
SizedBox( SizedBox(
width: 250.0, width: 250.0,
@ -362,7 +364,9 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
InkWell( InkWell(
child: Texts( child: Texts(
// 'Close', // 'Close',
TranslationBase.of(context).closeIt, TranslationBase.of(
context)
.closeIt,
color: Colors.red, color: Colors.red,
fontWeight: fontWeight:
FontWeight.w600, FontWeight.w600,
@ -383,10 +387,10 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
Column( Column(
children: [ children: [
ExpansionTile( ExpansionTile(
title: Texts(
title: Texts( TranslationBase.of( TranslationBase.of(
context) context)
.categorise), .categorise),
children: [ children: [
ProcedureListWidget( ProcedureListWidget(
model: model, model: model,
@ -424,9 +428,10 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
color: Colors.black12, color: Colors.black12,
), ),
ExpansionTile( ExpansionTile(
title: Texts( TranslationBase.of( title: Texts(
context) TranslationBase.of(
.brands), context)
.brands),
children: [ children: [
ProcedureListWidget( ProcedureListWidget(
model: model, model: model,
@ -465,9 +470,10 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
color: Colors.black12, color: Colors.black12,
), ),
ExpansionTile( ExpansionTile(
title: Texts( TranslationBase.of( title: Texts(
context) TranslationBase.of(
.price), context)
.price),
children: [ children: [
Container( Container(
color: Color( color: Color(
@ -558,14 +564,11 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
Container( Container(
width: 100, width: 100,
child: Button( child: Button(
label: TranslationBase.of(
label: TranslationBase.of( context)
context)
.reset, .reset,
backgroundColor: Colors.red, backgroundColor:
Colors.red,
), ),
), ),
SizedBox( SizedBox(
@ -629,13 +632,12 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
Navigator.pop( Navigator.pop(
context); context);
}, },
label: TranslationBase.of(
label: TranslationBase.of( context)
context)
.apply, .apply,
backgroundColor: Colors.green, backgroundColor:
Colors
.green,
), ),
), ),
], ],
@ -1131,7 +1133,8 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
padding: padding:
const EdgeInsets const EdgeInsets
.only( .only(
top: 4, bottom: 4), top: 4,
bottom: 4),
child: Texts( child: Texts(
"SAR ${model.parentProducts[index].price}", "SAR ${model.parentProducts[index].price}",
bold: true, bold: true,
@ -1167,30 +1170,50 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
], ],
), ),
), ),
widget.authenticatedUserObject
widget.authenticatedUserObject.isLogin ? .isLogin
Container( ? Container(
child: IconButton( child: IconButton(
icon: Icon(Icons.shopping_cart, icon: Icon(
size: 18, Icons
color: Colors.blue,), .shopping_cart,
onPressed: () async { size: 18,
if(model.parentProducts[index].rxMessage == null){ color:
GifLoaderDialogUtils.showMyDialog(context); Colors.blue,
await addToCartFunction(1, model.parentProducts[index].id); ),
GifLoaderDialogUtils.hideDialog(context); onPressed:
Navigator.push( () async {
context, if (model
FadePage(page: CartOrderPage())); .parentProducts[
} index]
else{ .rxMessage ==
AppToast.showErrorToast(message: TranslationBase.of(context).needPrescription); null) {
} GifLoaderDialogUtils
.showMyDialog(
} context);
await addToCartFunction(
), 1,
): Container(), model
.parentProducts[
index]
.id);
GifLoaderDialogUtils
.hideDialog(
context);
Navigator.push(
context,
FadePage(
page:
CartOrderPage()));
} else {
AppToast.showErrorToast(
message: TranslationBase.of(
context)
.needPrescription);
}
}),
)
: Container(),
], ],
), ),
), ),
@ -1238,8 +1261,6 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
), ),
), ),
)); ));
} }
addToCartFunction(quantity, itemID) async { addToCartFunction(quantity, itemID) async {
@ -1264,7 +1285,4 @@ class _ParentCategorisePageState extends State<ParentCategorisePage> {
} }
return false; return false;
} }
} }

@ -35,105 +35,108 @@ class _ProductBrandsPageState extends State<ProductBrandsPage> {
isShowAppBar: true, isShowAppBar: true,
isPharmacy: true, isPharmacy: true,
isShowDecPage: false, isShowDecPage: false,
body: Container( body: SingleChildScrollView(
child: Column( child: Container(
children: [ child: Column(
Container( children: [
color: Colors.white, Container(
alignment: color: Colors.white,
languageID == 'ar' ? Alignment.topRight : Alignment.topLeft, alignment: languageID == 'ar'
padding: languageID == 'ar' ? Alignment.topRight
? EdgeInsets.only(right: 10.0, top: 10.0) : Alignment.topLeft,
: EdgeInsets.only(left: 10.0, top: 10.0), padding: languageID == 'ar'
child: Text( ? EdgeInsets.only(right: 10.0, top: 10.0)
TranslationBase.of(context).topBrands, : EdgeInsets.only(left: 10.0, top: 10.0),
style: TextStyle( child: Text(
fontWeight: FontWeight.bold, TranslationBase.of(context).topBrands,
style: TextStyle(
fontWeight: FontWeight.bold,
),
), ),
), ),
), Container(
Container( height: 220,
height: 220, width: double.infinity,
width: double.infinity,
color: Colors.white,
child: topBrand(context),
),
SizedBox(
height: 10,
),
Container(
height: MediaQuery.of(context).size.height * 0.056,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5.0),
color: Colors.white, color: Colors.white,
child: topBrand(context),
), ),
child: InkWell( SizedBox(
child: Padding( height: 10,
padding: EdgeInsets.all(8.0), ),
child: Row( Container(
//crossAxisAlignment: CrossAxisAlignment.center, height: MediaQuery.of(context).size.height * 0.056,
mainAxisAlignment: MainAxisAlignment.start, decoration: BoxDecoration(
children: [ borderRadius: BorderRadius.circular(5.0),
Icon(Icons.search, size: 25.0), color: Colors.white,
SizedBox( ),
width: 15.0, child: InkWell(
), child: Padding(
Texts( padding: EdgeInsets.all(8.0),
TranslationBase.of(context).searchProductHere, child: Row(
fontSize: 13, //crossAxisAlignment: CrossAxisAlignment.center,
) mainAxisAlignment: MainAxisAlignment.start,
], children: [
Icon(Icons.search, size: 25.0),
SizedBox(
width: 15.0,
),
Texts(
TranslationBase.of(context).searchProductHere,
fontSize: 13,
)
],
),
), ),
onTap: () {
Navigator.push(
context,
FadePage(page: SearchBrandsPage()),
);
},
), ),
onTap: () {
Navigator.push(
context,
FadePage(page: SearchBrandsPage()),
);
},
), ),
), SizedBox(
SizedBox( height: 10,
height: 10, ),
), Container(
Container( height: 420,
height: 420, width: double.infinity,
width: double.infinity, color: Colors.white,
color: Colors.white, child: ListView.builder(
child: ListView.builder( itemCount: model.brandsListList.length,
itemCount: model.brandsListList.length, itemBuilder: (BuildContext context, int index) {
itemBuilder: (BuildContext context, int index) { return InkWell(
return InkWell( child: Container(
child: Container( margin: EdgeInsets.only(top: 50, left: 10),
margin: EdgeInsets.only(top: 50, left: 10), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, children: [
children: [ languageID == 'ar'
languageID == 'ar' ? Text(model.brandsListList[index].namen)
? Text(model.brandsListList[index].namen) : Text(model.brandsListList[index].name),
: Text(model.brandsListList[index].name), SizedBox(
SizedBox( height: 3,
height: 3, ),
), Divider(height: 1, color: Colors.grey)
Divider(height: 1, color: Colors.grey) ],
], ),
), ),
), onTap: () {
onTap: () { Navigator.push(
Navigator.push( context,
context, MaterialPageRoute(
MaterialPageRoute( builder: (context) => FinalProductsPage(
builder: (context) => FinalProductsPage( id: model.brandsListList[index].id
id: model.brandsListList[index].id .toString(),
.toString(), )),
)), );
); },
}, );
); }),
}), ),
), ],
], ),
), ),
), ),
), ),

@ -48,8 +48,10 @@ class _CartOrderPageState extends State<CartOrderPage> {
appBarTitle: TranslationBase.of(context).shoppingCart, appBarTitle: TranslationBase.of(context).shoppingCart,
isShowAppBar: true, isShowAppBar: true,
isPharmacy: true, isPharmacy: true,
//isBottomBar: true,
showHomeAppBarIcon: false, showHomeAppBarIcon: false,
isShowDecPage: true, isShowDecPage: false,
isMainPharmacyPages: true,
baseViewModel: model, baseViewModel: model,
backButtonTab: backButtonTab:
widget.changeTab != null ? () => widget.changeTab(0) : null, widget.changeTab != null ? () => widget.changeTab(0) : null,

@ -21,36 +21,38 @@ class _PharmacyPageState extends State<PharmacyPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
OrderPreviewViewModel orderPreviewViewModel = Provider.of(context); OrderPreviewViewModel orderPreviewViewModel = Provider.of(context);
return WillPopScope( return WillPopScope(
onWillPop: ()async{ onWillPop: () async {
return false; return false;
}, },
child:BaseView<PharmacyModuleViewModel>( child: BaseView<PharmacyModuleViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
await model.getSavedLanguage(); await model.getSavedLanguage();
await model.getBannerList(); await model.getBannerList();
if(model.isLogin) if (model.isLogin) await orderPreviewViewModel.getShoppingCart();
await orderPreviewViewModel.getShoppingCart(); },
}, allowAny: true,
allowAny: true, builder: (_, model, wi) => AppScaffold(
builder: (_, model, wi) => AppScaffold( title: "",
title: "", isShowDecPage: false,
isShowAppBar: false, baseViewModel: model,
isShowDecPage: false, isMainPharmacyPages: true,
baseViewModel: model, isPharmacy: true,
backgroundColor: Colors.white, isShowPharmacyAppbar: true,
body: Container( backgroundColor: Colors.white,
width: double.infinity, body: Container(
child: SingleChildScrollView( width: double.infinity,
child: Column( child: SingleChildScrollView(
//crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: <Widget>[ //crossAxisAlignment: CrossAxisAlignment.start,
BannerPager(model), children: <Widget>[
GridViewButtons(model), BannerPager(model),
PrescriptionsWidget(), GridViewButtons(model),
ShopByBrandWidget(), PrescriptionsWidget(),
RecentlyViewedWidget(), ShopByBrandWidget(),
BestSellerWidget(), RecentlyViewedWidget(),
],), BestSellerWidget(),
],
),
), ),
), ),
), ),

@ -108,22 +108,23 @@ class _SearchBrandsPageState extends State<SearchBrandsPage> {
itemCount: model.searchList.length, itemCount: model.searchList.length,
itemBuilder: (BuildContext ctx, index) { itemBuilder: (BuildContext ctx, index) {
return Padding( return Padding(
padding:EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Text( child: Text(
model.searchList[index].name, model.searchList[index].name,
style: TextStyle(fontSize: 20), style: TextStyle(fontSize: 20),
),
), ),
), ),
), Divider(height: 1, color: Colors.grey)
Divider(height: 1, color: Colors.grey) ],
],), ),
); );
}, },
), ),

@ -94,11 +94,13 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
builder: (_, model, wi) => AppScaffold( builder: (_, model, wi) => AppScaffold(
appBarTitle: TranslationBase.of(context).myAccount, appBarTitle: TranslationBase.of(context).myAccount,
isShowAppBar: false, isShowAppBar: false,
isShowDecPage: false, isShowDecPage: true,
isPharmacy: true, isPharmacy: true,
//isBottomBar: true,
isMainPharmacyPages: true,
body: user != null body: user != null
? Container( ? Container(
color: Colors.white, color: Colors.white,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -233,8 +235,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
Expanded( Expanded(
child: InkWell( child: InkWell(
onTap: () { onTap: () {
Navigator.push( Navigator.push(context,
context,
FadePage(page: WishlistPage())); FadePage(page: WishlistPage()));
}, },
child: Column( child: Column(

@ -35,6 +35,10 @@ class _PharmacyCategorisePageState extends State<PharmacyCategorisePage> {
Widget child) => Widget child) =>
AppScaffold( AppScaffold(
isShowDecPage: false, isShowDecPage: false,
isShowAppBar: false,
isMainPharmacyPages: true,
isPharmacy: true,
isShowPharmacyAppbar: true,
baseViewModel: model, baseViewModel: model,
body: Column( body: Column(
children: [ children: [

@ -1,20 +1,34 @@
import 'package:badges/badges.dart'; import 'package:badges/badges.dart';
import 'package:barcode_scan_fix/barcode_scan.dart';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page_pharmcy.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-page/cart-order-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-page/cart-order-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy_module_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/product-detail.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/profile/profile.dart';
import 'package:diplomaticquarterapp/pages/pharmacy_categorise.dart';
import 'package:diplomaticquarterapp/pages/search_products_page.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart'; import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart';
import 'package:diplomaticquarterapp/widgets/pharmacy/bottom_nav_pharmacy_bar.dart';
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart'; import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/widgets/typewriter/typewiter.dart'; import 'package:diplomaticquarterapp/widgets/typewriter/typewiter.dart';
@ -33,7 +47,9 @@ import 'not_auh_page.dart';
VoidCallback _onCartClick; VoidCallback _onCartClick;
class AppScaffold extends StatelessWidget { class AppScaffold extends StatefulWidget {
AppBarWidget appBar;
final String appBarTitle; final String appBarTitle;
final Widget body; final Widget body;
final Widget bottomSheet; final Widget bottomSheet;
@ -44,9 +60,11 @@ class AppScaffold extends StatelessWidget {
final bool isBottomBar; final bool isBottomBar;
final Widget floatingActionButton; final Widget floatingActionButton;
final bool isPharmacy; final bool isPharmacy;
final bool isMainPharmacyPages;
final bool isOfferPackages; final bool isOfferPackages;
final bool showPharmacyCart; final bool showPharmacyCart;
final bool showOfferPackagesCart; final bool showOfferPackagesCart;
final bool extendBody;
final String title; final String title;
final String description; final String description;
final bool isShowDecPage; final bool isShowDecPage;
@ -59,12 +77,14 @@ class AppScaffold extends StatelessWidget {
final bool isHelp; final bool isHelp;
final bool isLocalLoader; final bool isLocalLoader;
final Function backButtonTab; final Function backButtonTab;
final ValueChanged<int> changeCurrentTab;
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
AppBarWidget appBar;
final Widget customAppBar; final Widget customAppBar;
final int currentTab;
final bool isShowPharmacyAppbar;
AppScaffold setOnAppBarCartClick(VoidCallback onClick) {
_onCartClick = onClick;
return this;
}
AppScaffold( AppScaffold(
{@required this.body, {@required this.body,
@ -76,13 +96,15 @@ class AppScaffold extends StatelessWidget {
this.baseViewModel, this.baseViewModel,
this.floatingActionButton, this.floatingActionButton,
this.isPharmacy = false, this.isPharmacy = false,
this.isMainPharmacyPages = false,
this.showPharmacyCart = true, this.showPharmacyCart = true,
this.isOfferPackages = false, this.isOfferPackages = false,
this.showOfferPackagesCart = false, this.showOfferPackagesCart = false,
this.extendBody = false,
this.title, this.title,
this.description, this.description,
this.isShowDecPage = true, this.isShowDecPage = true,
this.isBottomBar, this.isBottomBar = false,
this.backgroundColor, this.backgroundColor,
this.preferredSize = 0.0, this.preferredSize = 0.0,
this.appBarIcons, this.appBarIcons,
@ -93,58 +115,197 @@ class AppScaffold extends StatelessWidget {
appBar, appBar,
this.customAppBar, this.customAppBar,
this.isLocalLoader = false, this.isLocalLoader = false,
this.backButtonTab}); this.backButtonTab,
this.changeCurrentTab,
this.currentTab,
this.isShowPharmacyAppbar = false});
AppScaffold setOnAppBarCartClick(VoidCallback onClick) { @override
_onCartClick = onClick; _AppScaffoldState createState() => _AppScaffoldState();
return this; }
class _AppScaffoldState extends State<AppScaffold> {
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
@override
void initState() {
super.initState();
}
AppBar pharmacyAppbar() {
return AppBar(
backgroundColor: Color(0xff5AB145),
elevation: 0,
title: Container(
height: MediaQuery.of(context).size.height * 0.056,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5.0),
color: Colors.white,
),
child: InkWell(
child: Padding(
padding: EdgeInsets.all(5.0),
child: Row(
//crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Icon(Icons.search, size: 25.0),
SizedBox(
width: 15.0,
),
Texts(
TranslationBase.of(context).searchProductHere,
fontSize: 13,
)
],
),
),
onTap: () {
Navigator.push(
context,
FadePage(page: SearchProductsPage()),
);
},
),
),
leading: Builder(
builder: (BuildContext context) {
return InkWell(
onTap: () {
Provider.of<PharmacyPagesViewModel>(context, listen: false)
.changeCurrentTab(0);
},
child: Container(
height: 2.0,
width: 10.0,
child: Image.asset(
'assets/images/pharmacy_logo.png',
),
),
);
},
),
actions: [
IconButton(
// iconSize: 70,
icon: Image.asset(
'assets/images/new-design/qr-code.png',
),
onPressed: _scanQrAndGetProduct //do something,
)
],
centerTitle: true,
);
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
PharmacyPagesViewModel pagesViewModel = Provider.of(context);
AppGlobal.context = context; AppGlobal.context = context;
return Scaffold( return Scaffold(
backgroundColor: backgroundColor:
backgroundColor ?? Theme.of(context).scaffoldBackgroundColor, widget.backgroundColor ?? Theme.of(context).scaffoldBackgroundColor,
appBar: isShowAppBar extendBody: widget.extendBody,
? customAppBar != null appBar: widget.isShowPharmacyAppbar
? customAppBar ? pharmacyAppbar()
: appBar = AppBarWidget( : widget.isShowAppBar
appBarTitle: appBarTitle, ? widget.customAppBar != null
appBarIcons: appBarIcons, ? widget.customAppBar
showHomeAppBarIcon: showHomeAppBarIcon, : widget.appBar = AppBarWidget(
isPharmacy: isPharmacy, appBarTitle: widget.appBarTitle,
showPharmacyCart: showPharmacyCart, appBarIcons: widget.appBarIcons,
isOfferPackages: isOfferPackages, showHomeAppBarIcon: widget.showHomeAppBarIcon,
showOfferPackagesCart: showOfferPackagesCart, isPharmacy: widget.isPharmacy,
isShowDecPage: isShowDecPage, showPharmacyCart: widget.showPharmacyCart,
backButtonTab: backButtonTab, isOfferPackages: widget.isOfferPackages,
showOfferPackagesCart: widget.showOfferPackagesCart,
isShowDecPage: widget.isShowDecPage,
backButtonTab: widget.backButtonTab,
)
: null,
bottomSheet: widget.bottomSheet,
body: (!Provider.of<ProjectViewModel>(context, listen: false).isLogin &&
widget.isShowDecPage)
? NotAutPage(
title: widget.title ?? widget.appBarTitle,
description: widget.description,
infoList: widget.infoList,
imagesInfo: widget.imagesInfo,
)
: widget.baseViewModel != null
? NetworkBaseView(
child: buildBodyWidget(context),
baseViewModel: widget.baseViewModel,
) )
: buildBodyWidget(context),
floatingActionButton: widget.floatingActionButton,
bottomNavigationBar: widget.isBottomBar
? BottomNavPharmacyBar(
changeIndex: changeCurrentTab,
index: widget.currentTab,
)
: null, : null,
bottomSheet: bottomSheet,
body: SafeArea(
top: true,
bottom: true,
child:
(!Provider.of<ProjectViewModel>(context, listen: false).isLogin &&
isShowDecPage)
? NotAutPage(
title: title ?? appBarTitle,
description: description,
infoList: infoList,
imagesInfo: imagesInfo,
)
: baseViewModel != null
? NetworkBaseView(
child: buildBodyWidget(context),
baseViewModel: baseViewModel,
)
: buildBodyWidget(context),
),
floatingActionButton: floatingActionButton,
); );
} }
void changeCurrentTab(int value) {
if (widget.isMainPharmacyPages) {
widget.changeCurrentTab(value);
} else {
Navigator.pushAndRemoveUntil(
locator<NavigationService>().navigatorKey.currentContext,
MaterialPageRoute(
builder: (context) => LandingPagePharmacy(currentTab: value)),
(Route<dynamic> r) => false);
}
}
Widget mainBody() {
return SafeArea(
top: true,
bottom: true,
child: (!Provider.of<ProjectViewModel>(context, listen: false).isLogin &&
widget.isShowDecPage)
? NotAutPage(
title: widget.title ?? widget.appBarTitle,
description: widget.description,
infoList: widget.infoList,
imagesInfo: widget.imagesInfo,
)
: widget.baseViewModel != null
? NetworkBaseView(
child: buildBodyWidget(context),
baseViewModel: widget.baseViewModel,
)
: buildBodyWidget(context),
);
}
void _scanQrAndGetProduct() async {
try {
String result = await BarcodeScanner.scan();
try {
String barcode = result;
GifLoaderDialogUtils.showMyDialog(context);
await BaseAppClient()
.getPharmacy("$GET_PHARMACY_PRODUCTs_BY_SKU$barcode",
onSuccess: (dynamic response, int statusCode) {
print(response);
var product = PharmacyProduct.fromJson(response["products"][0]);
GifLoaderDialogUtils.hideDialog(context);
Navigator.push(context, FadePage(page: ProductDetailPage(product)));
}, onFailure: (String error, int statusCode) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: "Product not found");
});
} catch (apiEx) {
AppToast.showErrorToast(
message: "Something went wrong, please try again");
}
} catch (barcodeEx) {}
}
buildAppLoaderWidget(bool isLoading) { buildAppLoaderWidget(bool isLoading) {
return isLoading ? AppLoaderWidget() : Container(); return isLoading ? AppLoaderWidget() : Container();
} }
@ -152,15 +313,15 @@ class AppScaffold extends StatelessWidget {
buildBodyWidget(context) { buildBodyWidget(context) {
return Stack(children: <Widget>[ return Stack(children: <Widget>[
Center( Center(
child: isLoading child: widget.isLoading
? CircularProgressIndicator( ? CircularProgressIndicator(
backgroundColor: Colors.white, backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>( valueColor: AlwaysStoppedAnimation<Color>(
Colors.grey[500], Colors.grey[500],
), ),
) )
: body), : widget.body),
isHelp == true ? RobotIcon() : Container() widget.isHelp == true ? RobotIcon() : Container()
]); ]);
} }
} }
@ -263,7 +424,8 @@ class AppBarWidgetState extends State<AppBarWidget> {
icon: Badge( icon: Badge(
position: BadgePosition.topStart(top: -15, start: -10), position: BadgePosition.topStart(top: -15, start: -10),
badgeContent: Text( badgeContent: Text(
orderPreviewViewModel.cartResponse.quantityCount.toString() /*_badgeText*/, orderPreviewViewModel.cartResponse.quantityCount
.toString() /*_badgeText*/,
style: TextStyle( style: TextStyle(
fontSize: 9, fontSize: 9,
color: Colors.white, color: Colors.white,

@ -9,7 +9,8 @@ import 'bottom_nav_pharmacy_item.dart';
class BottomNavPharmacyBar extends StatefulWidget { class BottomNavPharmacyBar extends StatefulWidget {
final ValueChanged<int> changeIndex; final ValueChanged<int> changeIndex;
final int index; int index = 0;
BottomNavPharmacyBar({Key key, this.changeIndex, this.index}) BottomNavPharmacyBar({Key key, this.changeIndex, this.index})
: super(key: key); : super(key: key);

@ -9,7 +9,7 @@ class BottomNavHomeItem extends StatelessWidget {
final Image image; final Image image;
final String title; final String title;
final ValueChanged<int> changeIndex; final Function changeIndex;
final int index; final int index;
final int currentIndex; final int currentIndex;
final Function onTap; final Function onTap;
@ -62,7 +62,6 @@ class BottomNavHomeItem extends StatelessWidget {
'assets/images/habib-logo.png', 'assets/images/habib-logo.png',
), ),
height: 22.0, height: 22.0,
), ),
SizedBox( SizedBox(
height: 5, height: 5,

Loading…
Cancel
Save