Skip to content

Commit 91bdd0a

Browse files
author
Veli Bacik
committed
burgers feature has done
1 parent f3cf806 commit 91bdd0a

File tree

17 files changed

+712
-7
lines changed

17 files changed

+712
-7
lines changed

asset/lang/en-US.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
"tab5":"TOYS"
5050
}
5151
},
52+
"burgers":{
53+
"favoriteProducts":"Best \nSelling",
54+
"normalProducts":"Burgers"
55+
},
5256
"setting":{
5357
"title":"Settings",
5458
"about":{

asset/lang/tr-TR.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
"tab5":"Oyuncaklar"
5050
}
5151
},
52+
"burgers":{
53+
"favoriteProducts":"En Çok Satılanlar",
54+
"normalProducts":"Burgerler"
55+
},
5256
"setting":{
5357
"title":"Ayarlar",
5458
"about":{
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import 'package:flutter/material.dart';
2+
3+
class RangePriceSLider extends StatefulWidget {
4+
final double min;
5+
final double max;
6+
7+
final void Function(RangeValues values) onCompleted;
8+
9+
const RangePriceSLider({Key? key, required this.min, required this.max, required this.onCompleted}) : super(key: key);
10+
@override
11+
_RangePriceSLiderState createState() => _RangePriceSLiderState();
12+
}
13+
14+
class _RangePriceSLiderState extends State<RangePriceSLider> {
15+
late RangeValues _values;
16+
17+
@override
18+
void initState() {
19+
super.initState();
20+
_values = RangeValues(widget.min, widget.max);
21+
}
22+
23+
@override
24+
Widget build(BuildContext context) {
25+
return RangeSlider(
26+
values: _values,
27+
max: widget.max,
28+
min: widget.min,
29+
labels: RangeLabels('${_values.start}', '${_values.end}'),
30+
activeColor: Colors.red,
31+
divisions: 10,
32+
onChanged: (value) {
33+
setState(() {
34+
_values = value;
35+
});
36+
widget.onCompleted(_values);
37+
},
38+
);
39+
}
40+
}

lib/core/init/lang/locale_keys.g.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ abstract class LocaleKeys {
4545
static const home_game_tabbar_tab5 = 'home.game.tabbar.tab5';
4646
static const home_game_tabbar = 'home.game.tabbar';
4747
static const home_game = 'home.game';
48+
static const home_burgers_favoriteProducts = 'home.burgers.favoriteProducts';
49+
static const home_burgers_normalProducts = 'home.burgers.normalProducts';
50+
static const home_burgers = 'home.burgers';
4851
static const home_setting_title = 'home.setting.title';
4952
static const home_setting_about_title = 'home.setting.about.title';
5053
static const home_setting_about_contribitions = 'home.setting.about.contribitions';

lib/main.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import 'core/init/navigation/navigation_route.dart';
1010
import 'core/init/navigation/navigation_service.dart';
1111
import 'core/init/notifier/provider_list.dart';
1212
import 'core/init/notifier/theme_notifer.dart';
13-
import 'view/settings/view/settings_view.dart';
13+
import 'view/home/burger/view/burgers_view.dart';
1414

1515
Future<void> main() async {
1616
await _init();
@@ -38,7 +38,7 @@ class MyApp extends StatelessWidget {
3838
return MaterialApp(
3939
debugShowCheckedModeBanner: false,
4040
theme: context.watch<ThemeNotifier>().currentTheme,
41-
home: SettingsView(),
41+
home: BurgersView(),
4242
localizationsDelegates: context.localizationDelegates,
4343
supportedLocales: context.supportedLocales,
4444
locale: context.locale,
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
3+
4+
import '../../../view/home/burger/model/burger_model.dart';
5+
6+
class BurgerCard extends StatelessWidget {
7+
final BurgerModel? model;
8+
9+
const BurgerCard({Key? key, this.model}) : super(key: key);
10+
@override
11+
Widget build(BuildContext context) {
12+
return Card(
13+
child: Column(
14+
children: [
15+
Expanded(child: Image.network(model?.image ?? '')),
16+
Text('${model?.name}'),
17+
buildRatingBar(),
18+
Text('${model?.price} \$'),
19+
],
20+
));
21+
}
22+
23+
RatingBar buildRatingBar() {
24+
return RatingBar.builder(
25+
initialRating: (model?.rates ?? 0).toDouble(),
26+
minRating: 1,
27+
direction: Axis.horizontal,
28+
allowHalfRating: true,
29+
itemCount: 5,
30+
ignoreGestures: true,
31+
itemSize: 10,
32+
itemPadding: EdgeInsets.zero,
33+
itemBuilder: (context, _) => Icon(Icons.star, color: Colors.amber),
34+
onRatingUpdate: (rating) {
35+
print(rating);
36+
},
37+
);
38+
}
39+
}
40+
41+
extension BurgerCardExtension on BurgerCard {
42+
Widget buildList(List<BurgerModel> items) {
43+
return SingleChildScrollView(
44+
scrollDirection: Axis.horizontal,
45+
child: Row(
46+
children: items.map((e) => BurgerCard(model: e)).toList(),
47+
),
48+
);
49+
}
50+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import 'package:logger/logger.dart';
2+
3+
mixin NetworkHelper {
4+
void showLog(dynamic message) {
5+
Logger().wtf(message);
6+
}
7+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
enum BurgerSortValues { NAME, PRICE, RATES, UPDATED }
2+
enum BurgerSortValuesType { ASC, DSC }
3+
4+
enum BurgerNetworkPath { MAIN, PRICE }
5+
enum BurgerQueryParamaters { FAVORITE, SORT, SORT_TYPE, MIN, MAX }
6+
7+
extension BurgerSortValuesExtension on BurgerSortValues {
8+
String get rawValue {
9+
switch (this) {
10+
case BurgerSortValues.NAME:
11+
return 'name';
12+
case BurgerSortValues.PRICE:
13+
return 'price';
14+
case BurgerSortValues.RATES:
15+
return 'rates';
16+
case BurgerSortValues.UPDATED:
17+
return 'updated';
18+
}
19+
}
20+
}
21+
22+
extension BurgerSortValuesTypeExtension on BurgerSortValuesType {
23+
int get rawValue {
24+
switch (this) {
25+
case BurgerSortValuesType.ASC:
26+
return -1;
27+
case BurgerSortValuesType.DSC:
28+
return 1;
29+
}
30+
}
31+
}
32+
33+
extension BurgerNetworkPathExtension on BurgerNetworkPath {
34+
String get rawValue {
35+
switch (this) {
36+
case BurgerNetworkPath.MAIN:
37+
return 'burgers';
38+
case BurgerNetworkPath.PRICE:
39+
return 'burgers/price';
40+
}
41+
}
42+
}
43+
44+
extension BurgerQueryParamatersExtension on BurgerQueryParamaters {
45+
MapEntry<String, dynamic> rawValue(dynamic value) {
46+
switch (this) {
47+
case BurgerQueryParamaters.FAVORITE:
48+
return MapEntry('isFavorite', value);
49+
case BurgerQueryParamaters.SORT:
50+
return MapEntry('sort', value);
51+
case BurgerQueryParamaters.SORT_TYPE:
52+
return MapEntry('sortType', value);
53+
case BurgerQueryParamaters.MIN:
54+
return MapEntry('min', value);
55+
case BurgerQueryParamaters.MAX:
56+
return MapEntry('max', value);
57+
}
58+
}
59+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
import 'package:vexana/vexana.dart';
3+
4+
part 'burger_model.g.dart';
5+
6+
@JsonSerializable()
7+
class BurgerModel extends INetworkModel<BurgerModel> {
8+
@JsonKey(name: '_id')
9+
String? id;
10+
String? image;
11+
String? name;
12+
int? price;
13+
int? rates;
14+
bool? isFavorite;
15+
String? updated;
16+
17+
@override
18+
BurgerModel fromJson(Map<String, dynamic> json) {
19+
return _$BurgerModelFromJson(json);
20+
}
21+
22+
@override
23+
Map<String, dynamic> toJson() {
24+
return _$BurgerModelToJson(this);
25+
}
26+
}

lib/view/home/burger/model/burger_model.g.dart

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)