Skip to content

Commit a6e4f44

Browse files
Add product page
1 parent a27a53f commit a6e4f44

17 files changed

+346
-67
lines changed

lib/common_widget/AppBarWidget.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_ecommerce_app/components/AppSignIn.dart';
3+
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
4+
5+
Widget appBarWidget(context) {
6+
return AppBar(
7+
elevation: 0.0,
8+
centerTitle: true,
9+
title: Image.asset(
10+
"assets/images/ic_app_icon.png",
11+
width: 80,
12+
height: 40,
13+
),
14+
actions: <Widget>[
15+
IconButton(
16+
onPressed: () {
17+
Navigator.push(
18+
context,
19+
MaterialPageRoute(builder: (context) => AppSignIn()),
20+
);
21+
},
22+
icon: Icon(FontAwesomeIcons.user),
23+
color: Color(0xFF323232),
24+
),
25+
],
26+
);
27+
}

lib/common_widget/DrawerWidget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_ecommerce_app/main.dart';
33
import 'package:flutter_ecommerce_app/screens/WishListScreen.dart';
4-
import 'package:flutter_ecommerce_app/sign_in_up/SignIn.dart';
4+
import 'package:flutter_ecommerce_app/components/AppSignIn.dart';
55
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
66

77
class DrawerWidget extends StatefulWidget {

lib/common_widget/GridTilesCategory.dart

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,44 @@
11
import 'dart:developer';
22
import 'package:flutter/material.dart';
3-
import 'package:flutter_ecommerce_app/category/SubCategoryPage.dart';
3+
import 'package:flutter_ecommerce_app/screens/ProductsScreen.dart';
4+
import 'package:flutter_ecommerce_app/screens/SubCategoryScreen.dart';
45

56
class GridTilesCategory extends StatelessWidget {
67
String name;
78
String imageUrl;
89
String slug;
10+
bool fromSubProducts = false;
911

1012
GridTilesCategory(
1113
{Key key,
1214
@required this.name,
1315
@required this.imageUrl,
14-
@required this.slug})
16+
@required this.slug,
17+
this.fromSubProducts})
1518
: super(key: key);
1619

1720
@override
1821
Widget build(BuildContext context) {
1922
return InkWell(
2023
onTap: () {
21-
Navigator.push(
22-
context,
23-
MaterialPageRoute(builder: (context) => SubCategoryPage(slug: slug,)),
24-
);
24+
if (fromSubProducts) {
25+
Navigator.push(
26+
context,
27+
MaterialPageRoute(
28+
builder: (context) => ProductsScreen(
29+
slug: "products/?page=1&limit=12&category=" + slug,
30+
name: name,
31+
)),
32+
);
33+
} else {
34+
Navigator.push(
35+
context,
36+
MaterialPageRoute(
37+
builder: (context) => SubCategoryScreen(
38+
slug: slug,
39+
)),
40+
);
41+
}
2542
},
2643
child: Card(
2744
color: Colors.white,
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import 'dart:developer';
2+
import 'package:flutter/material.dart';
3+
import 'package:flutter_ecommerce_app/screens/ProductsScreen.dart';
4+
import 'package:flutter_ecommerce_app/screens/SubCategoryScreen.dart';
5+
6+
class GridTilesProducts extends StatelessWidget {
7+
String name;
8+
String imageUrl;
9+
String slug;
10+
String price;
11+
bool fromSubProducts = false;
12+
13+
GridTilesProducts(
14+
{Key key,
15+
@required this.name,
16+
@required this.imageUrl,
17+
@required this.slug,
18+
@required this.price,
19+
this.fromSubProducts})
20+
: super(key: key);
21+
22+
@override
23+
Widget build(BuildContext context) {
24+
return InkWell(
25+
onTap: () {
26+
/* if (fromSubProducts) {
27+
Navigator.push(
28+
context,
29+
MaterialPageRoute(
30+
builder: (context) => ProductsScreen(
31+
slug: "products/?page=1&limit=12&category=" + slug,
32+
name: name,
33+
)),
34+
);
35+
} else {
36+
Navigator.push(
37+
context,
38+
MaterialPageRoute(
39+
builder: (context) => SubCategoryScreen(
40+
slug: slug,
41+
)),
42+
);
43+
}*/
44+
},
45+
child: Container(
46+
padding: EdgeInsets.only(top: 5),
47+
child: Card(
48+
color: Colors.white,
49+
shape: RoundedRectangleBorder(
50+
borderRadius: const BorderRadius.all(
51+
Radius.circular(8.0),
52+
),
53+
),
54+
elevation: 0,
55+
child: Center(
56+
child: Column(
57+
children: <Widget>[
58+
Image.network(
59+
imageUrl,
60+
width: 150,
61+
height: 150,
62+
),
63+
Container(
64+
alignment: Alignment.center,
65+
padding: EdgeInsets.only(left: 10, right: 10, top: 15),
66+
child: Text(
67+
(name.length <= 40 ? name : name.substring(0, 40)),
68+
textAlign: TextAlign.left,
69+
style: TextStyle(
70+
color: Color(0xFF444444),
71+
fontFamily: 'Roboto-Light.ttf',
72+
fontSize: 15,
73+
fontWeight: FontWeight.w400)),
74+
),
75+
Container(
76+
alignment: Alignment.bottomLeft,
77+
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
78+
child: Text("৳ ${(price != null) ? price : 'Unavailable'}",
79+
style: TextStyle(
80+
color: (price != null)
81+
? Color(0xFFf67426)
82+
: Color(0xFF0dc2cd),
83+
fontFamily: 'Roboto-Light.ttf',
84+
fontSize: 20,
85+
fontWeight: FontWeight.w500)),
86+
)
87+
],
88+
),
89+
)),
90+
),
91+
);
92+
}
93+
}

lib/sign_in_up/SignIn.dart renamed to lib/components/AppSignIn.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/rendering.dart';
3-
import 'package:flutter_ecommerce_app/sign_in_up/SignUp.dart';
3+
import 'package:flutter_ecommerce_app/components/AppSingUp.dart';
44

55
class AppSignIn extends StatefulWidget {
66
@override

lib/sign_in_up/SignUp.dart renamed to lib/components/AppSingUp.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:flutter_ecommerce_app/sign_in_up/SignIn.dart';
2+
import 'package:flutter_ecommerce_app/components/AppSignIn.dart';
33

44
class AppSingUp extends StatelessWidget {
55
@override

lib/brands/BrandHomePage.dart renamed to lib/components/BrandHomePage.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:flutter_ecommerce_app/common_widget/GridTilesCategory.dart';
66
import 'package:flutter_ecommerce_app/utils/Urls.dart';
77
import 'package:http/http.dart';
88

9-
import 'BrandModel.dart';
9+
import '../models/BrandModel.dart';
1010

1111
BrandModel brandModel;
1212

lib/category/CategorySlider.dart renamed to lib/components/CategorySlider.dart

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'dart:convert';
22
import 'package:flutter/material.dart';
3-
import 'package:flutter_ecommerce_app/category/CategoryModel.dart';
3+
import 'package:flutter_ecommerce_app/models/CategoryModel.dart';
44
import 'package:flutter_ecommerce_app/common_widget/CircularProgress.dart';
55
import 'package:flutter_ecommerce_app/common_widget/GridTilesCategory.dart';
66
import 'package:flutter_ecommerce_app/utils/Urls.dart';
@@ -11,6 +11,7 @@ List<CategoryModel> categories;
1111
class CategoryPage extends StatefulWidget {
1212
String slug;
1313
bool isSubList;
14+
1415
CategoryPage({Key key, this.slug, this.isSubList = false}) : super(key: key);
1516

1617
@override
@@ -36,14 +37,15 @@ class _CategoryPageState extends State<CategoryPage> {
3637
if (snapshot.hasError)
3738
return Text('Error: ${snapshot.error}');
3839
else
39-
return createListView(context, snapshot);
40+
return createListView(context, snapshot, widget.isSubList);
4041
}
4142
},
4243
);
4344
}
4445
}
4546

46-
Widget createListView(BuildContext context, AsyncSnapshot snapshot) {
47+
Widget createListView(
48+
BuildContext context, AsyncSnapshot snapshot, bool isSubList) {
4749
List<CategoryModel> values = snapshot.data;
4850
return GridView.count(
4951
crossAxisCount: 3,
@@ -53,9 +55,11 @@ Widget createListView(BuildContext context, AsyncSnapshot snapshot) {
5355
children: List<Widget>.generate(values.length, (index) {
5456
return GridTile(
5557
child: GridTilesCategory(
56-
name: values[index].name,
57-
imageUrl: values[index].imageUrl,
58-
slug: values[index].slug));
58+
name: values[index].name,
59+
imageUrl: values[index].imageUrl,
60+
slug: values[index].slug,
61+
fromSubProducts: isSubList,
62+
));
5963
}),
6064
);
6165
}

lib/shop/ShopHomePage.dart renamed to lib/components/ShopHomePage.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'dart:developer';
44
import 'package:flutter/material.dart';
55
import 'package:flutter_ecommerce_app/common_widget/CircularProgress.dart';
66
import 'package:flutter_ecommerce_app/common_widget/GridTilesCategory.dart';
7-
import 'package:flutter_ecommerce_app/shop/ShopModel.dart';
7+
import 'package:flutter_ecommerce_app/models/ShopModel.dart';
88
import 'package:flutter_ecommerce_app/utils/Urls.dart';
99
import 'package:http/http.dart';
1010

lib/main.dart

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_ecommerce_app/common_widget/AppBarWidget.dart';
34
import 'package:flutter_ecommerce_app/common_widget/BottomNavBarWidget.dart';
45
import 'package:flutter_ecommerce_app/common_widget/DrawerWidget.dart';
56
import 'package:flutter_ecommerce_app/screens/HomeScreen.dart';
67
import 'package:flutter_ecommerce_app/screens/ShoppingCartScreen.dart';
78
import 'package:flutter_ecommerce_app/screens/WishListScreen.dart';
8-
import 'package:flutter_ecommerce_app/sign_in_up/SignIn.dart';
9+
import 'package:flutter_ecommerce_app/components/AppSignIn.dart';
910
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
1011

1112
void main() => runApp(MyApp());
@@ -48,27 +49,7 @@ class _MyHomePageNewState extends State<MyHomePage> {
4849
return DefaultTabController(
4950
length: 3,
5051
child: Scaffold(
51-
appBar: AppBar(
52-
elevation: 0.0,
53-
centerTitle: true,
54-
title: Image.asset(
55-
"assets/images/ic_app_icon.png",
56-
width: 80,
57-
height: 40,
58-
),
59-
actions: <Widget>[
60-
IconButton(
61-
onPressed: () {
62-
Navigator.push(
63-
context,
64-
MaterialPageRoute(builder: (context) => AppSignIn()),
65-
);
66-
},
67-
icon: Icon(FontAwesomeIcons.user),
68-
color: Color(0xFF323232),
69-
),
70-
],
71-
),
52+
appBar: appBarWidget(context),
7253
drawer: DrawerWidget(),
7354
body: IndexedStack(
7455
index: currentIndex,

0 commit comments

Comments
 (0)