Skip to content
Snippets Groups Projects
Commit 6c797c8d authored by Aayush's avatar Aayush
Browse files

Product Overview

parent b9e7bb3d
No related branches found
No related tags found
1 merge request!3Main product
import 'package:flutter/material.dart';
Color primaryColor = Color(0xffd1ad17);
Color scaffoldBackgroundColor = Color(0xffcbcbcb);
Color textColor = Colors.black87;
......@@ -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(),
);
);
}
}
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
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),
],
),
),
......
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,
),
),
],
),
)),
],
));
}
}
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),
),
),
)
],
)
],
)))
],
))
],
));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment