From 6c797c8d7da73bde232bef1011ffb57385418cdc Mon Sep 17 00:00:00 2001
From: Aayush <aap409@usask.ca>
Date: Mon, 7 Mar 2022 21:30:30 -0600
Subject: [PATCH] Product Overview

---
 lib/config/colors.dart                        |   5 +
 lib/main.dart                                 |   9 +-
 lib/screens/home_screens/drawer_side.dart     | 121 +++++
 lib/screens/home_screens/home_screen.dart     | 439 +++++++-----------
 .../product_overview/product_overview.dart    | 186 ++++++++
 lib/screens/home_screens/single_product.dart  |  79 ++++
 6 files changed, 556 insertions(+), 283 deletions(-)
 create mode 100644 lib/config/colors.dart
 create mode 100644 lib/screens/home_screens/drawer_side.dart
 create mode 100644 lib/screens/home_screens/product_overview/product_overview.dart
 create mode 100644 lib/screens/home_screens/single_product.dart

diff --git a/lib/config/colors.dart b/lib/config/colors.dart
new file mode 100644
index 0000000..1e55591
--- /dev/null
+++ b/lib/config/colors.dart
@@ -0,0 +1,5 @@
+import 'package:flutter/material.dart';
+
+Color primaryColor = Color(0xffd1ad17);
+Color scaffoldBackgroundColor = Color(0xffcbcbcb);
+Color textColor = Colors.black87;
diff --git a/lib/main.dart b/lib/main.dart
index f29e52c..5a135c5 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -2,11 +2,12 @@ import 'package:firebase_auth/firebase_auth.dart';
 import 'package:flutter/material.dart';
 import 'package:food_app/auth/sign_in.dart';
 import 'package:firebase_core/firebase_core.dart';
+import 'package:food_app/config/colors.dart';
 import 'package:food_app/screens/home_screens/home_screen.dart';
 
 void main() async {
   WidgetsFlutterBinding.ensureInitialized();
-  // await Firebase.initializeApp();
+  //await Firebase.initializeApp();
   runApp(MyApp());
 }
 
@@ -15,8 +16,12 @@ class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
+      theme: ThemeData(
+        primaryColor: primaryColor,
+        scaffoldBackgroundColor: scaffoldBackgroundColor
+      ),
       debugShowCheckedModeBanner: false,
       home: HomeScreen(),
-      );
+    );
   }
 }
diff --git a/lib/screens/home_screens/drawer_side.dart b/lib/screens/home_screens/drawer_side.dart
new file mode 100644
index 0000000..b7bdf3d
--- /dev/null
+++ b/lib/screens/home_screens/drawer_side.dart
@@ -0,0 +1,121 @@
+import 'package:flutter/material.dart';
+
+import '../../config/colors.dart';
+
+class DrawerSide extends StatelessWidget{
+  Widget listTile({IconData iconData, String title}) {
+    return ListTile(
+      leading: Icon(
+        iconData,
+        size: 32,
+      ),
+      title: Text(
+        title,
+        style: TextStyle(color: Colors.black45),
+      ),
+    );
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Drawer(
+      child: Container(
+        width: 100,
+        color: primaryColor,
+        child: ListView(          
+          children: [
+            DrawerHeader(
+              child: Row(
+                children: [
+                  CircleAvatar(
+                    radius: 43,
+                    backgroundColor: Colors.white54,
+                    child: CircleAvatar(
+                      backgroundColor: Colors.yellow,
+                      backgroundImage: NetworkImage(
+                        "https://s3.envato.com/files/328957910/vegi_thumb.png"
+                      ),
+                      radius: 40,
+                    ),
+                  ),
+                  SizedBox(
+                    width: 20,
+                  ),
+                  Column(
+                    mainAxisAlignment: MainAxisAlignment.center,
+                    children: [
+                      Text("Welcome Guest"),
+                      SizedBox(
+                        height: 7,
+                      ),
+                      Container(
+                        height: 30,
+                        child: OutlineButton(
+                          onPressed: () {},
+                          child: Text("Login"),
+                          shape: RoundedRectangleBorder(
+                            borderRadius: BorderRadius.circular(15),
+                            side: BorderSide(
+                              width: 2,
+                              color: textColor,
+                            ),
+                          ),
+                        ),
+                      ),
+                    ],
+                  ),
+                ],
+              ),
+            ),
+            listTile(iconData: Icons.home_outlined, title: "Home"),
+            listTile(iconData: Icons.shop_outlined, title: "Review Cart"),
+            listTile(iconData: Icons.person_outline, title: "My Profile"),
+            listTile(iconData: Icons.notifications_outlined, title: "Notification"),
+            listTile(iconData: Icons.star_outline, title: "Rating & Review"),
+            listTile(iconData: Icons.favorite_outline, title: "Wishlist"),
+            listTile(iconData: Icons.copy_outlined, title: "Complaints"),
+            listTile(iconData: Icons.format_quote_outlined, title: "FAQs"),
+            Container(
+                height: 350,
+                padding: EdgeInsets.symmetric(horizontal: 20),
+                child: Column(
+                  crossAxisAlignment: CrossAxisAlignment.start,
+                  children: [
+                    Text("Contact Support"),
+                    SizedBox(
+                      height: 10,
+                    ),
+                    Row(
+                      children: [
+                        Text("Call us:"),
+                        SizedBox(
+                          width: 10,
+                        ),
+                        Text("+1(306)638-250")
+                      ],
+                    ),
+                    SizedBox(
+                      height: 5,
+                    ),
+                    SingleChildScrollView(
+                      scrollDirection: Axis.horizontal,
+                      child: Row(
+                        children: [
+                          Text("Mail us:"),
+                          SizedBox(
+                            width: 10,
+                          ),
+                          Text("abc@contoso.com",overflow: TextOverflow.ellipsis,
+                          ),
+                        ],
+                      ),
+                    ),
+                  ],
+                ),
+              ),
+          ],
+        ),
+      ),
+    );
+  }
+}
\ No newline at end of file
diff --git a/lib/screens/home_screens/home_screen.dart b/lib/screens/home_screens/home_screen.dart
index 70d3f5e..1ed599a 100644
--- a/lib/screens/home_screens/home_screen.dart
+++ b/lib/screens/home_screens/home_screen.dart
@@ -1,249 +1,176 @@
 import 'package:flutter/material.dart';
+import 'package:food_app/screens/home_screens/drawer_side.dart';
+import 'package:food_app/config/colors.dart';
+import 'package:food_app/screens/home_screens/product_overview/product_overview.dart';
+import 'package:food_app/screens/home_screens/single_product.dart';
 
 class HomeScreen extends StatelessWidget {
-  Widget singleProducts() {
-    return Container(
-      margin: EdgeInsets.symmetric(
-        horizontal: 5,
-      ),
-      height: 230,
-      width: 160,
-      decoration: BoxDecoration(
-        color: Color(0xffd9dad9),
-        borderRadius: BorderRadius.circular(10),
-      ),
-      child: Column(
-        crossAxisAlignment: CrossAxisAlignment.start,
-        children: [
-          Expanded(
-            flex: 2,
-            child: Image.network(
-                'https://pngimg.com/uploads/spinach/spinach_PNG10.png'),
+  Widget _buildHerbsProduct(context) {
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.start,
+      children: [
+        Padding(
+          padding: const EdgeInsets.symmetric(vertical: 20),
+          child: Row(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: [
+              Text('Herbs Seasonings'),
+              Text(
+                'view all',
+                style: TextStyle(color: Colors.grey),
+              ),
+            ],
           ),
-          Expanded(
-            child: Padding(
-                padding: const EdgeInsets.symmetric(
-                  horizontal: 10,
-                  vertical: 5,
-                ),
-                child: Column(
-                  crossAxisAlignment: CrossAxisAlignment.start,
-                  children: [
-                    Text(
-                      'Fresh Basil',
-                      style: TextStyle(
-                          color: Colors.black, fontWeight: FontWeight.bold),
-                    ),
-                    Text(
-                      '50\$/50 Gram',
-                      style: TextStyle(
-                          color: Colors.grey, fontWeight: FontWeight.bold),
-                    ),
-                    Row(
-                      children: [
-                        Expanded(
-                          child: Container(
-                            padding: EdgeInsets.only(left: 5),
-                            height: 20,
-                            width: 50,
-                            decoration: BoxDecoration(
-                              border: Border.all(color: Colors.grey),
-                              borderRadius: BorderRadius.circular(10),
-                            ),
-                            child: Row(
-                              children: [
-                                Expanded(
-                                  child: Text(
-                                    '50 Gram',
-                                    style: TextStyle(fontSize: 10),
-                                  ),
-                                ),
-                                Center(
-                                  child: Icon(
-                                    Icons.arrow_drop_down,
-                                    size: 20,
-                                    color: Colors.yellow,
-                                  ),
-                                )
-                              ],
-                            ),
-                          ),
-                        ),
-                        SizedBox(
-                          width: 5,
-                        ),
-                        Expanded(
-                          child: Container(
-                            height: 20,
-                            width: 50,
-                            decoration: BoxDecoration(
-                              border: Border.all(color: Colors.grey),
-                              borderRadius: BorderRadius.circular(10),
-                            ),
-                            child: Row(
-                              mainAxisAlignment: MainAxisAlignment.center,
-                              children: [
-                                Icon(
-                                  Icons.remove,
-                                  size: 15,
-                                  color: Color(0xffd0b84c),
-                                ),
-                                Text(
-                                  '1',
-                                  style: TextStyle(
-                                    color: Color(0xffd0b84c),
-                                    fontWeight: FontWeight.bold,
-                                  ),
-                                ),
-                                Icon(
-                                  Icons.add,
-                                  size: 15,
-                                  color: Color(0xffd0b84c),
-                                ),
-                              ],
-                            ),
-                          ),
-                        ),
-                      ],
-                    ),
-                  ],
-                )),
+        ),
+        SingleChildScrollView(
+          scrollDirection: Axis.horizontal,
+          child: Row(
+            children: [
+              SingleProduct(
+                onTap: () {
+                  Navigator.of(context).push(MaterialPageRoute(
+                      builder: (context) => ProductOverview()));
+                },
+                productImage:
+                    'https://www.pngitem.com/pimgs/m/490-4903879_fresh-basil-leaf-png-transparent-png.png',
+                productName: "Fresh Basil",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://i.dlpng.com/static/png/5560435-peppermint-transparent-image-png-arts-peppermint-png-1200_900_preview.png',
+                productName: "Fresh Mint",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://www.pngarts.com/files/5/Rosemary-PNG-Transparent-Image.png',
+                productName: "Rose Mary",
+              )
+            ],
           ),
-        ],
-      ),
+        ),
+      ],
     );
   }
 
-  Widget listTile({IconData icon, String title}) {
-    return ListTile(
-      leading: Icon(
-        icon,
-        size: 32,
-      ),
-      title: Text(
-        title,
-        style: TextStyle(color: Colors.black45),
-      ),
+  Widget _buildFreshProduct(context) {
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.start,
+      children: [
+        Padding(
+          padding: const EdgeInsets.symmetric(vertical: 20),
+          child: Row(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: [
+              Text('Fresh Fruits'),
+              Text(
+                'view all',
+                style: TextStyle(color: Colors.grey),
+              ),
+            ],
+          ),
+        ),
+        SingleChildScrollView(
+          scrollDirection: Axis.horizontal,
+          child: Row(
+            children: [
+              SingleProduct(
+                onTap: () {
+                  Navigator.of(context).push(MaterialPageRoute(
+                      builder: (context) => ProductOverview()));
+                },
+                productImage:
+                    'https://www.kindpng.com/picc/m/191-1916425_berries-png-file-download-free-mixed-berries-fruit.png',
+                productName: "Fresh Berries",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://e1.pngegg.com/pngimages/832/291/png-clipart-fruit-sliced-watermelon.png',
+                productName: "Watermelon",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://www.nicepng.com/png/detail/852-8528360_mango-png-image-mango-clipart-fruit.png',
+                productName: "Mangoes",
+              )
+            ],
+          ),
+        ),
+      ],
+    );
+  }
+
+  Widget _buildRootProduct(context) {
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.start,
+      children: [
+        Padding(
+          padding: const EdgeInsets.symmetric(vertical: 20),
+          child: Row(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: [
+              Text('Root Vegetable'),
+              Text(
+                'view all',
+                style: TextStyle(color: Colors.grey),
+              ),
+            ],
+          ),
+        ),
+        SingleChildScrollView(
+          scrollDirection: Axis.horizontal,
+          child: Row(
+            children: [
+              SingleProduct(
+                onTap: () {
+                  Navigator.of(context).push(MaterialPageRoute(
+                      builder: (context) => ProductOverview()));
+                },
+                productImage:
+                    'https://www.fondation-louisbonduelle.org/wp-content/uploads/2016/09/fenouil_262755635-e1475226317736.png',
+                productName: "Fennel",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://www.nicepng.com/png/detail/50-508075_free-png-beet-png-images-transparent-red-beetroot.png',
+                productName: "Beet Root",
+              ),
+              SingleProduct(
+                productImage:
+                    'https://purepng.com/public/uploads/large/purepng.com-turnipvegetables-root-vegetable-rutabaga-swede-turnip-neep-941524702928b62ft.png',
+                productName: "Turnip",
+              )
+            ],
+          ),
+        ),
+      ],
     );
   }
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
-      backgroundColor: Color(0xffcbcbcb),
-      drawer: Drawer(
-          child: Container(
-        color: Color(0xffd1ad17),
-        child: ListView(
-          children: [
-            DrawerHeader(
-              child: Row(
-                children: [
-                  CircleAvatar(
-                    backgroundColor: Colors.white54,
-                    radius: 43,
-                    child: CircleAvatar(
-                      radius: 40,
-                      backgroundColor: Colors.red,
-                    ),
-                  ),
-                  SizedBox(
-                    width: 20,
-                  ),
-                  Column(
-                    mainAxisAlignment: MainAxisAlignment.center,
-                    children: [
-                      Text("Welcome Guest"),
-                      SizedBox(
-                        height: 7,
-                      ),
-                      Container(
-                        height: 30,
-                        child: OutlineButton(
-                          onPressed: () {},
-                          child: Text("Login"),
-                          shape: RoundedRectangleBorder(
-                            borderRadius: BorderRadius.circular(15),
-                            side: BorderSide(
-                              width: 2,
-                            ),
-                          ),
-                        ),
-                      ),
-                    ],
-                  )
-                ],
-              ),
-            ),
-            listTile(icon: Icons.home_outlined, title: "Home"),
-            listTile(icon: Icons.shop_outlined, title: "Review Cart"),
-            listTile(icon: Icons.person_outline, title: "My Profile"),
-            listTile(icon: Icons.notifications_outlined, title: "Notification"),
-            listTile(icon: Icons.star_outline, title: "Rating & Review"),
-            listTile(icon: Icons.favorite_outline, title: "Wishlist"),
-            listTile(icon: Icons.copy_outlined, title: "Complaints"),
-            listTile(icon: Icons.format_quote_outlined, title: "FAQs"),
-            Container(
-                height: 350,
-                padding: EdgeInsets.symmetric(horizontal: 20),
-                child: Column(
-                  crossAxisAlignment: CrossAxisAlignment.start,
-                  children: [
-                    Text("Contact Support"),
-                    SizedBox(
-                      height: 10,
-                    ),
-                    Row(
-                      children: [
-                        Text("Call us:"),
-                        SizedBox(
-                          width: 10,
-                        ),
-                        Text("+1(306)638-250")
-                      ],
-                    ),
-                    SizedBox(
-                      height: 5,
-                    ),
-                    SingleChildScrollView(
-                      scrollDirection: Axis.horizontal,
-                      child: Row(
-                        children: [
-                          Text("Mail us:"),
-                          SizedBox(
-                            width: 10,
-                          ),
-                          Text("abc@contoso.com")
-                        ],
-                      ),
-                    ),
-                  ],
-                ))
-          ],
-        ),
-      )),
+      drawer: DrawerSide(),
       appBar: AppBar(
-        iconTheme: IconThemeData(color: Colors.black),
+        iconTheme: IconThemeData(color: textColor),
         title: Text(
           'Home',
-          style: TextStyle(color: Colors.black, fontSize: 17),
+          style: TextStyle(color: textColor, fontSize: 17),
         ),
         actions: [
           CircleAvatar(
             radius: 12,
-            backgroundColor: Color(0xffd4d181),
-            child: Icon(Icons.search, size: 18, color: Colors.black),
+            backgroundColor: primaryColor,
+            child: Icon(Icons.search, size: 17, color: textColor),
           ),
           Padding(
             padding: const EdgeInsets.symmetric(horizontal: 5),
             child: CircleAvatar(
-              backgroundColor: Color(0xffd4d181),
+              backgroundColor: primaryColor,
               radius: 12,
-              child: Icon(Icons.shop, size: 18, color: Colors.black),
+              child: Icon(Icons.shop, size: 17, color: textColor),
             ),
-          ),
+          )
         ],
-        backgroundColor: Color(0xffd6b738),
       ),
       body: Padding(
         padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
@@ -265,13 +192,13 @@ class HomeScreen extends StatelessWidget {
                   Expanded(
                     flex: 2,
                     child: Container(
-                      child: ListView(
+                      child: Column(
                         children: [
                           Padding(
                             padding:
                                 const EdgeInsets.only(right: 130, bottom: 10),
                             child: Container(
-                              height: 40,
+                              height: 50,
                               width: 100,
                               decoration: BoxDecoration(
                                 color: Color(0xffd1ad17),
@@ -284,7 +211,7 @@ class HomeScreen extends StatelessWidget {
                                 child: Text(
                                   'Vegi',
                                   style: TextStyle(
-                                    fontSize: 17,
+                                    fontSize: 20,
                                     color: Colors.white,
                                     shadows: [
                                       BoxShadow(
@@ -297,20 +224,17 @@ class HomeScreen extends StatelessWidget {
                               ),
                             ),
                           ),
-                          Padding(
-                            padding: const EdgeInsets.only(left: 20),
-                            child: Text(
-                              '30% Off',
-                              style: TextStyle(
-                                  fontSize: 40,
-                                  color: Colors.green[100],
-                                  fontWeight: FontWeight.bold),
-                            ),
+                          Text(
+                            '30% Off',
+                            style: TextStyle(
+                                fontSize: 40,
+                                color: Colors.green[100],
+                                fontWeight: FontWeight.bold),
                           ),
                           Padding(
                             padding: const EdgeInsets.only(left: 20),
                             child: Text(
-                              'On all vegetable products',
+                              'On all vegetables products',
                               style: TextStyle(
                                 color: Colors.white,
                               ),
@@ -326,56 +250,9 @@ class HomeScreen extends StatelessWidget {
                 ],
               ),
             ),
-            Padding(
-              padding: const EdgeInsets.symmetric(vertical: 5),
-              child: Row(
-                mainAxisAlignment: MainAxisAlignment.spaceBetween,
-                children: [
-                  Text('Herbs Seasonings'),
-                  Text(
-                    'View All',
-                    style: TextStyle(color: Colors.grey),
-                  ),
-                ],
-              ),
-            ),
-            SingleChildScrollView(
-              scrollDirection: Axis.horizontal,
-              child: Row(
-                children: [
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                ],
-              ),
-            ),
-            Padding(
-              padding: const EdgeInsets.symmetric(vertical: 5),
-              child: Row(
-                mainAxisAlignment: MainAxisAlignment.spaceBetween,
-                children: [
-                  Text('Fresh Fruits'),
-                  Text(
-                    'View All',
-                    style: TextStyle(color: Colors.grey),
-                  ),
-                ],
-              ),
-            ),
-            SingleChildScrollView(
-              scrollDirection: Axis.horizontal,
-              child: Row(
-                children: [
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                  singleProducts(),
-                ],
-              ),
-            ),
+            _buildHerbsProduct(context),
+            _buildFreshProduct(context),
+            _buildRootProduct(context),
           ],
         ),
       ),
diff --git a/lib/screens/home_screens/product_overview/product_overview.dart b/lib/screens/home_screens/product_overview/product_overview.dart
new file mode 100644
index 0000000..525acc2
--- /dev/null
+++ b/lib/screens/home_screens/product_overview/product_overview.dart
@@ -0,0 +1,186 @@
+import 'package:flutter/material.dart';
+import 'package:food_app/config/colors.dart';
+
+enum SigninCharacter { fill, outline }
+
+class ProductOverview extends StatefulWidget {
+  @override
+  _ProductOverviewState createState() => _ProductOverviewState();
+}
+
+class _ProductOverviewState extends State<ProductOverview> {
+  SigninCharacter _character = SigninCharacter.fill;
+  Widget bottomNavigatorBar({
+    Color iconColor,
+    Color backgroundColor,
+    Color color,
+    String title,
+    IconData iconData,
+  }) {
+    return Expanded(
+      child: Container(
+        padding: EdgeInsets.all(20),
+        color: backgroundColor,
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.center,
+          children: [
+            Icon(
+              iconData,
+              size: 17,
+              color: iconColor,
+            ),
+            SizedBox(
+              width: 5,
+            ),
+            Text(
+              title,
+              style: TextStyle(color: color),
+            ),
+          ],
+        ),
+      ),
+    );
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+        bottomNavigationBar: Row(children: [
+          bottomNavigatorBar(
+            backgroundColor: textColor,
+            color: Colors.white70,
+            iconColor: Colors.grey,
+            title: "Add to Wishlist",
+            iconData: Icons.favorite_outline,
+          ),
+          bottomNavigatorBar(
+            backgroundColor: primaryColor,
+            color: textColor,
+            iconColor: Colors.white70,
+            title: "Go To Cart",
+            iconData: Icons.shop_outlined,
+          ),
+        ]),
+        appBar: AppBar(
+            iconTheme: IconThemeData(color: textColor),
+            title:
+                Text("Product Overview", style: TextStyle(color: textColor))),
+        body: Column(
+          children: [
+            Expanded(
+                flex: 2,
+                child: Container(
+                  width: double.infinity,
+                  child: Column(
+                    children: [
+                      ListTile(
+                        title: Text("Fresh Basil"),
+                        subtitle: Text("\$50"),
+                      ),
+                      Container(
+                        height: 250,
+                        padding: EdgeInsets.all(40),
+                        child: Image.network(
+                            "https://www.pngitem.com/pimgs/m/490-4903879_fresh-basil-leaf-png-transparent-png.png"),
+                      ),
+                      Container(
+                        padding: EdgeInsets.symmetric(horizontal: 20),
+                        width: double.infinity,
+                        child: Text(
+                          "Available Options",
+                          textAlign: TextAlign.start,
+                          style: TextStyle(
+                            color: textColor,
+                            fontWeight: FontWeight.w600,
+                          ),
+                        ),
+                      ),
+                      Padding(
+                          padding: EdgeInsets.symmetric(
+                            horizontal: 10,
+                          ),
+                          child: Row(
+                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                            children: [
+                              Row(
+                                children: [
+                                  CircleAvatar(
+                                    radius: 3,
+                                    backgroundColor: Colors.green[700],
+                                  ),
+                                  Radio(
+                                    value: SigninCharacter.fill,
+                                    groupValue: _character,
+                                    activeColor: Colors.green[700],
+                                    onChanged: (value) {
+                                      setState() {
+                                        _character = value;
+                                      }
+                                    },
+                                  )
+                                ],
+                              ),
+                              Text("\$50"),
+                              Container(
+                                padding: EdgeInsets.symmetric(
+                                  horizontal: 30,
+                                  vertical: 10,
+                                ),
+                                decoration: BoxDecoration(
+                                  border: Border.all(
+                                    color: Colors.grey,
+                                  ),
+                                  borderRadius: BorderRadius.circular(
+                                    30,
+                                  ),
+                                ),
+                                child: Row(
+                                  mainAxisAlignment: MainAxisAlignment.center,
+                                  children: [
+                                    Icon(
+                                      Icons.add,
+                                      size: 17,
+                                      color: primaryColor,
+                                    ),
+                                    Text("ADD",
+                                        style: TextStyle(color: primaryColor))
+                                  ],
+                                ),
+                              )
+                            ],
+                          ))
+                    ],
+                  ),
+                )),
+            Expanded(
+                child: Container(
+              padding: EdgeInsets.all(20),
+              width: double.infinity,
+              child: Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  Text(
+                    "About This Product",
+                    style: TextStyle(
+                      fontSize: 18,
+                      fontWeight: FontWeight.w600,
+                    ),
+                  ),
+                  SizedBox(
+                    height: 10,
+                  ),
+                  Text(
+                    "In marketing, a product is an object, or system, or service made available for consumer use as of the consumer demand; it is anything that can be offered to a market to satisfy the desire or need of a customer.",
+                    style: TextStyle(
+                      fontSize: 12,
+                      color: textColor,
+                      fontWeight: FontWeight.w600,
+                    ),
+                  ),
+                ],
+              ),
+            )),
+          ],
+        ));
+  }
+}
diff --git a/lib/screens/home_screens/single_product.dart b/lib/screens/home_screens/single_product.dart
new file mode 100644
index 0000000..d88c747
--- /dev/null
+++ b/lib/screens/home_screens/single_product.dart
@@ -0,0 +1,79 @@
+import 'package:flutter/material.dart';
+import 'package:food_app/config/colors.dart';
+
+class SingleProduct extends StatelessWidget {
+  final String productImage;
+  final String productName;
+  final Function onTap;
+  SingleProduct({this.productImage, this.productName, this.onTap});
+  @override
+  Widget build(BuildContext context) {
+    return SingleChildScrollView(
+        scrollDirection: Axis.horizontal,
+        child: Row(
+          children: [
+            Container(
+                margin: EdgeInsets.only(right: 10),
+                height: 230,
+                width: 165,
+                decoration: BoxDecoration(
+                  color: Color(0xffd9dad9),
+                  borderRadius: BorderRadius.circular(10),
+                ),
+                child: Column(
+                  crossAxisAlignment: CrossAxisAlignment.start,
+                  children: [
+                    GestureDetector(
+                      onTap: onTap,
+                      child: Container(
+                          height: 150,
+                          padding: EdgeInsets.all(5),
+                          width: double.infinity,
+                          child: Image.network(
+                            productImage,
+                          )),
+                    ),
+                    Expanded(
+                        flex: 2,
+                        child: Padding(
+                            padding: const EdgeInsets.symmetric(
+                                horizontal: 10, vertical: 5),
+                            child: Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                Text(
+                                  productName,
+                                  style: TextStyle(
+                                    color: textColor,
+                                    fontWeight: FontWeight.bold,
+                                  ),
+                                ),
+                                Text('50\$/50 Gram',
+                                    style: TextStyle(
+                                      color: Colors.grey,
+                                    )),
+                                SizedBox(
+                                  height: 5,
+                                ),
+                                Row(
+                                  children: [
+                                    Expanded(
+                                      child: Container(
+                                        padding: EdgeInsets.only(left: 5),
+                                        height: 25,
+                                        decoration: BoxDecoration(
+                                          border:
+                                              Border.all(color: Colors.grey),
+                                        ),
+                                      ),
+                                    )
+                                  ],
+                                )
+                              ],
+                            )))
+                  ],
+                ))
+          ],
+        ));
+  }
+}
-- 
GitLab