Commit fabd3fc0 authored by Dio Maulana's avatar Dio Maulana

home page fix

parent 21db6841
{
"base_url": "https://romi-dev2.ravku.com/",
"title": "Ravintola Dev BYOD",
"isResponsive": true,
"isResponsive": false,
"debug": true
}
\ No newline at end of file
......@@ -335,6 +335,7 @@ class Api {
"sold_in_store": false,
"type": typeCategory,
"category_name": dataCat[d]['name'],
"category_id": dataCat[d]['id'],
"description": '',
"group_id": '',
"group_name": '',
......@@ -391,6 +392,7 @@ class Api {
"sold_in_store": false,
"type": typeGroup,
"category_name": dataCat[d]['name'],
"category_id": dataCat[d]['id'],
"description": '',
"group_id": menuList[i]['group_id'],
"group_name": menuList[i]['group_name'],
......@@ -411,6 +413,7 @@ class Api {
"sold_in_store": menuList[i]['sold_in_store'],
"type": typeMenu,
"category_name": dataCat[d]['name'],
"category_id": dataCat[d]['id'],
"description": menuList[i]['description'],
"group_name": menuList[i]['group_name'],
"group_id": menuList[i]['group_id'],
......@@ -437,6 +440,7 @@ class Api {
"sold_in_store": false,
"type": typeCategory,
"category_name": favGroup[s]['name'],
"category_id": favGroup[s]['id'],
"description": '',
"group_id": '',
"group_name": '',
......@@ -486,6 +490,7 @@ class Api {
"sold_in_store": false,
"type": typeGroup,
"category_name": favGroup[s]['name'],
"category_id": favGroup[s]['id'],
"description": '',
"group_id": favDetail[i]['group_id'],
"group_name": favDetail[i]['group_name'],
......@@ -507,6 +512,7 @@ class Api {
"sold_in_store": favDetail[i]['sold_in_store'],
"type": typeMenu,
"category_name": favGroup[s]['name'],
"category_id": favGroup[s]['id'],
"description": favDetail[i]['description'],
"group_name": favDetail[i]['group_name'],
"group_id": favDetail[i]['group_id'],
......@@ -532,6 +538,7 @@ class Api {
isSell: false,
type: typeCategory,
categoryName: '',
categoryId: '',
description: '',
groupId: '',
groupName: '',
......
......@@ -26,8 +26,29 @@ import 'package:byod/models/filter_menu.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class SearchMenu extends Cubit<List<dynamic>> {
SearchMenu() : super([[], 'All', false]);
// return arraynya [list<Category>, SelectedCat, bool dari ini lagi search by text or not,]
SearchMenu()
: super([
[
FilterMenu(
id: 'start',
name: '',
price: '',
originalPrice: '',
imageUrlMedium: '',
imageUrlThumbnail: '',
isSell: false,
type: typeMenu,
categoryName: '',
categoryId: '',
description: '',
groupName: '',
groupId: '',
)
],
'All',
false
]);
// return arraynya [list<Category>, SelectedCat, bool dari search by text(typing) or not,]
void searchMenu(
List<FilterMenu> oldMenu, {
......@@ -63,22 +84,11 @@ class SearchMenu extends Cubit<List<dynamic>> {
if (indexGroupId == -1 && indexGroup != -1) {
searchMenu.add(oldMenu[indexGroup]);
}
searchMenu.add(x);
}
// for (var menu in x.menu) {
// if (menu.name.toLowerCase().contains(keyword.toLowerCase())) {
// // searchMenu.add(menu);
// menuSearch.add(menu);
// var x = {
// "id": cat.id,
// "name": cat.name,
// "menu": menuSearch,
// };
// searchMenu.add(Category.createCategory(x));
// }
// }
}
} else {
searchMenu = oldMenu;
}
} else {
if (categorySelected != '') {
......
......@@ -249,6 +249,8 @@ const textColorTabel = Color(0xff333333);
const textColorBlack = Color(0xff000000);
const textColorRed = Color(0xffE73636);
const textGrey = Color(0xffE0E0E0);
const textGreyDeskripsi = Color(0xffBDBDBD);
const backgroundColorBottomSheet = Color(0xffE5E5E5);
const textColorModalHeaderNama = Color(0xffCCCCFF);
const gridCardBackgroundColor = Color(0xffFFFFFF);
Color buttonColor =
......
import 'package:flutter/material.dart';
import '../helper.dart';
class PoniBottomSheet extends StatelessWidget {
const PoniBottomSheet({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
double widthScreen = responsiveWidthScreen(context);
return Container(
width: widthScreen * 0.3,
height: MediaQuery.of(context).size.height * 0.008,
width: 50,
height: 3,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(roundedButton),
color: Colors.grey),
borderRadius: BorderRadius.circular(7),
color: const Color(0xffD9D9D9)),
// child: Divider(
// color: buttonColor.withOpacity(0.6),
// thickness: MediaQuery.of(context).size.height * 0.008,
......
......@@ -162,11 +162,12 @@ TextStyle deskripsiMenuStyle({
TextStyle amountMenuStyle({
font = 16,
Color color = textColorBlack,
FontWeight fontWeight = FontWeight.w300,
}) {
return TextStyle(
fontFamily: (fontFamily == '') ? null : fontFamily,
fontSize: font,
fontWeight: FontWeight.w300,
fontWeight: fontWeight,
color: color,
);
}
......@@ -212,7 +213,7 @@ TextStyle textCountItem({
Color color = textInButton,
}) {
return TextStyle(
fontFamily: 'Robot',
fontFamily: 'Roboto',
fontSize: font,
fontWeight: FontWeight.w500,
color: color,
......@@ -350,6 +351,24 @@ Text textAmountMenu(BuildContext context, int amount) {
// );
}
TextStyle textDeskripsiHeader() {
return const TextStyle(
fontFamily: 'Roboto',
fontWeight: FontWeight.w500,
fontSize: 14,
color: textColorBlack,
);
}
TextStyle textDeskripsi() {
return const TextStyle(
fontFamily: 'Roboto',
fontWeight: FontWeight.w400,
fontSize: 14,
color: textGreyDeskripsi,
);
}
Text textAmountCoret(BuildContext context, int hargaCoret) {
return defaultText(
context,
......@@ -398,7 +417,7 @@ Text textMenuNameBottomShetModalMenu(BuildContext context, String text) {
text,
maxLines: 2,
overFlow: TextOverflow.ellipsis,
style: textStyleMenuList(context),
style: menuNameBottomSheet(),
);
// return Text(
// text,
......@@ -408,6 +427,15 @@ Text textMenuNameBottomShetModalMenu(BuildContext context, String text) {
// );
}
TextStyle menuNameBottomSheet() {
return const TextStyle(
fontFamily: 'Roboto',
fontWeight: FontWeight.w500,
fontSize: 28,
color: textColorBlack,
);
}
Text textDescriptionBottomShetModalMenu(BuildContext context, String text) {
return defaultText(
context,
......
......@@ -10,6 +10,7 @@ class FilterMenu {
final bool isSell;
final int type;
final String categoryName;
final String categoryId;
final String description;
final String groupName;
final String groupId;
......@@ -28,6 +29,7 @@ class FilterMenu {
required this.isSell,
required this.type,
required this.categoryName,
required this.categoryId,
required this.description,
required this.groupName,
required this.groupId,
......@@ -48,16 +50,17 @@ class FilterMenu {
isSell: json['sold_in_store'],
type: json['type'],
categoryName: json['category_name'],
categoryId: json['category_id'],
description: json['description'],
groupName: json['group_name'],
groupId: json['group_id'],
isFavMenu: (json['is_fav'] == null) ? false : json['is_fav'],
variantCat: json['variant_cat'],
favGroupId: (json['favorite_group_id'] == null)
? ''
: json['favorite_group_id'],
favGroupId:
(json['favorite_group_id'] == null) ? '' : json['favorite_group_id'],
favGroupName: (json['favorite_group_name'] == null)
? ''
: json['favorite_group_name']);
: json['favorite_group_name'],
);
}
}
......@@ -63,86 +63,88 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
return Container(
padding: EdgeInsets.symmetric(horizontal: leftRigthPadding),
child: Container(
height: MediaQuery.of(context).size.height * 0.9,
margin: EdgeInsets.only(
left: widthScreen * 0.005,
right: widthScreen * 0.005,
top: MediaQuery.of(context).size.height * 0.005,
bottom: MediaQuery.of(context).size.height * 0.005),
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(roundedImage),
topLeft: Radius.circular(roundedImage)),
color: backgroundColor),
height: 704,
child: Container(
margin: EdgeInsets.only(
left: widthScreen * 0.05,
right: widthScreen * 0.05,
top: MediaQuery.of(context).size.height * 0.02,
bottom: MediaQuery.of(context).size.height * 0.02),
margin: const EdgeInsets.symmetric(
horizontal: 16,
),
child: Column(
children: [
const SizedBox(
height: 8,
),
const PoniBottomSheet(),
SizedBox(
height: MediaQuery.of(context).size.height * 0.03,
const SizedBox(
height: 32,
),
Align(
alignment: Alignment.topLeft,
child: textMenuNameBottomShetModalMenu(
context,
widget.namaMenu,
),
Container(
// height: MediaQuery.of(context).size.height * 0.45,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(roundedImage),
color: disabledColor.withOpacity(0.8),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(roundedImage),
const SizedBox(
height: 30,
),
ClipRRect(
borderRadius: BorderRadius.circular(21),
child: (widget.imageUrl != '')
? Image(
width: 343,
height: 350,
fit: BoxFit.fill,
image: NetworkImage(widget.imageUrl),
)
: const Image(
width: 343,
height: 350,
fit: BoxFit.fill,
image: AssetImage('assets/noimage.png')),
),
const SizedBox(
height: 20,
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
),
Align(
(widget.description != '')
? Align(
alignment: Alignment.topLeft,
child: textMenuNameBottomShetModalMenu(
child: defaultText(
context,
widget.namaMenu,
),
'Deskripsi',
style: textDeskripsiHeader(),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
)
: const SizedBox(),
const SizedBox(
height: 12,
),
(widget.description != '')
? Align(
alignment: Alignment.topLeft,
child: textDescriptionBottomShetModalMenu(
child: defaultText(
context,
widget.description,
maxLines: 5,
overFlow: TextOverflow.ellipsis,
style: textDeskripsi(),
),
)
: const SizedBox(),
(widget.description != '')
? SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
)
: const SizedBox(),
Align(
alignment: Alignment.topLeft,
child: textAmoutBottomShetModalMenu(
context,
widget.hargaMenu,
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02,
const SizedBox(
height: 31,
),
const Spacer(),
Container(
padding: const EdgeInsets.only(bottom: 18),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
defaultText(
context,
'Rp ${formatNumber().format(widget.hargaMenu)}',
style: amountMenuStyle(
font: 20, fontWeight: FontWeight.w500),
),
GestureDetector(
onTap: () {
if (widget.isSell) {
......@@ -161,7 +163,8 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
MaterialPageRoute(
builder: (_) => VariantCat(
namaMenu: widget.namaMenu,
variantCategories: widget.variantCat,
variantCategories:
widget.variantCat,
initPrice: widget.hargaMenu,
idItem: widget.id,
imageUrl: widget.imageUrl,
......@@ -176,7 +179,8 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
} else {
Navigator.pop(context);
showModalBottomSheet(
backgroundColor: Colors.white.withOpacity(0),
backgroundColor:
Colors.white.withOpacity(0),
isScrollControlled: true,
context: context,
builder: (context) {
......@@ -207,13 +211,96 @@ class _ShowMenuModalState extends State<ShowMenuModal> {
}
}
},
child: buttonBottom(
child: Container(
height: 38,
width: 119,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6),
color: buttonColor,
),
child: Center(
child: defaultText(
context,
(widget.isSell) ? "Tambahkan Orderan" : "Habis",
(widget.isSell) ? buttonColor : disabledColor,
double.infinity,
'Tambah',
style: addButtonMenu(),
),
),
),
)
],
),
)
// GestureDetector(
// onTap: () {
// if (widget.isSell) {
// if (widget.isHavevariant) {
// if (indexListOrderan == -1) {
// Navigator.pop(context);
// context
// .read<OrderVariantTemporaryBloc>()
// .insertDataVariant(
// widget.id,
// widget.hargaMenu,
// 1,
// []); // check pada bloc untuk mengethui list arraynya
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (_) => VariantCat(
// namaMenu: widget.namaMenu,
// variantCategories: widget.variantCat,
// initPrice: widget.hargaMenu,
// idItem: widget.id,
// imageUrl: widget.imageUrl,
// listCurrentOrder: list,
// orderDetail: OrderDetail(
// allIdVariant: '',
// totalItem: 0,
// totalHarga: 0,
// note: '',
// orderVariant: []),
// )));
// } else {
// Navigator.pop(context);
// showModalBottomSheet(
// backgroundColor: Colors.white.withOpacity(0),
// isScrollControlled: true,
// context: context,
// builder: (context) {
// return CustomizeVariant(
// orders: list[indexListOrderan],
// variantCat: widget.variantCat);
// },
// );
// }
// } else {
// initialValue += 1;
// context.read<OrdersBloc>().insertData([
// [
// widget.id,
// widget.namaMenu,
// initialValue,
// widget.hargaMenu,
// list,
// widget.imageUrl,
// orderVariants,
// widget.hargaMenu,
// (indexListOrderan != -1)
// ? list[indexListOrderan].note
// : '',
// ]
// ], context);
// Navigator.pop(context);
// }
// }
// },
// child: buttonBottom(
// context,
// (widget.isSell) ? "Tambahkan Orderan" : "Habis",
// (widget.isSell) ? buttonColor : disabledColor,
// double.infinity,
// ),
// )
],
),
),
......
// ignore_for_file: must_be_immutable
import 'package:byod/bloc/menu_selected_bar.dart';
import 'package:byod/models/fav_group.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -10,9 +11,15 @@ import '../../models/category_list.dart';
class CategoryListHome extends StatefulWidget {
List<CategoryList> categoryList;
List<FavoriteGroup> favList;
ScrollController scrollController;
// ScrollController scrollControllerMenu;
CategoryListHome({
Key? key,
required this.categoryList,
required this.scrollController,
required this.favList,
// required this.scrollControllerMenu,
}) : super(key: key);
@override
......@@ -21,14 +28,7 @@ class CategoryListHome extends StatefulWidget {
class _CategoryListHomeState extends State<CategoryListHome> {
int selectedIndex = 0;
List<String> catMenu = [
'All Item',
'New',
'Discount',
'Food',
'Beverage',
'Additional'
];
@override
Widget build(BuildContext context) {
return BlocBuilder<MenuSelectedBar, List<dynamic>>(
......@@ -40,15 +40,25 @@ class _CategoryListHomeState extends State<CategoryListHome> {
itemBuilder: (context, i) {
return GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
context
.read<MenuSelectedBar>()
.selectedBarMenu(i, widget.categoryList[i].name);
.selectedBarMenu(i, widget.categoryList[i].id);
widget.scrollController.animateTo(
(widget.favList.isNotEmpty) ? 371 : 0,
duration: Duration(milliseconds: animatedTime),
curve: Curves.fastOutSlowIn,
);
},
child: Container(
color: backgroundColor,
margin: EdgeInsets.only(
left: (i == 0) ? 0 : 28.335,
right: (i == catMenu.length - 1) ? 0 : 28.335),
right: (i == widget.categoryList.length - 1) ? 0 : 28.335),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
......
......@@ -60,12 +60,17 @@ class FavGridMenu extends StatelessWidget {
height: widthGrid - (2 * paddingLeftRigthGrid),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
// color: Colors.red,
color: disabledColor.withOpacity(0.8),
),
child: GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
showModalBottomSheet(
backgroundColor: backgroundColor.withOpacity(0),
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
......@@ -88,11 +93,15 @@ class FavGridMenu extends StatelessWidget {
},
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Image(
child: (categoryFavAfterSelect[i].imageUrlMedium != '')
? Image(
fit: BoxFit.fill,
image:
NetworkImage(categoryFavAfterSelect[i].imageUrlMedium),
),
image: NetworkImage(
categoryFavAfterSelect[i].imageUrlMedium),
)
: const Image(
fit: BoxFit.fill,
image: AssetImage('assets/noimage.png')),
),
),
),
......@@ -177,6 +186,11 @@ class FavGridMenu extends StatelessWidget {
? GestureDetector(
key: const Key('AddButton'),
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
if (menuFav.isSell) {
if (menuFav.variantCat.isNotEmpty) {
if (indexListOrderan == -1) {
......@@ -273,6 +287,11 @@ class FavGridMenu extends StatelessWidget {
children: [
GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
showModalBottomSheet(
backgroundColor: backgroundColor,
isScrollControlled: true,
......@@ -310,6 +329,11 @@ class FavGridMenu extends StatelessWidget {
),
GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
if (initialValue > 0) {
initialValue -= 1;
context.read<OrdersBloc>().insertData([
......@@ -350,6 +374,11 @@ class FavGridMenu extends StatelessWidget {
),
GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
initialValue += 1;
context.read<OrdersBloc>().insertData([
[
......
......@@ -30,6 +30,11 @@ class _FavoriteListState extends State<FavoriteList> {
itemBuilder: (context, i) {
return GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
context
.read<FavSelectedBar>()
.selectedBarFav(i, widget.favoriteList[i].id);
......
// ignore_for_file: sized_box_for_whitespace
import 'package:byod/bloc/order_bloc.dart';
import 'package:byod/helper/widget/poni_bottom_sheet.dart';
import 'package:byod/models/orders.dart';
import 'package:byod/ui/home/variant_cat.dart';
import 'package:flutter/material.dart';
......@@ -13,6 +14,7 @@ import '../../helper/widget/style.dart';
import '../../models/filter_menu.dart';
import '../../models/order_details.dart';
import '../../models/order_variants.dart';
import 'bottom_sheet_menu.dart';
import 'bottom_sheet_variant.dart';
class MenuListUtama extends StatelessWidget {
......@@ -20,10 +22,14 @@ class MenuListUtama extends StatelessWidget {
Key? key,
required this.categoryNonFav,
required this.i,
required this.widthScreen,
required this.scrollController,
}) : super(key: key);
final List<FilterMenu> categoryNonFav;
final int i;
final double widthScreen;
final ScrollController scrollController;
@override
Widget build(BuildContext context) {
......@@ -107,17 +113,56 @@ class MenuListUtama extends StatelessWidget {
width: 12,
height: double.infinity,
),
Container(
GestureDetector(
onTap: () {
FocusScopeNode currentFocus =
FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
return ShowMenuModal(
imageUrl: categoryNonFav[i].imageUrlMedium,
namaMenu: categoryNonFav[i].name,
hargaMenu: amountParseToInt(
categoryNonFav[i].price),
isHavevariant:
categoryNonFav[i].variantCat.isNotEmpty
? true
: false,
description: categoryNonFav[i].description,
id: categoryNonFav[i].id,
variantCat: categoryNonFav[i].variantCat,
isSell: categoryNonFav[i].isSell,
);
},
);
},
child: Container(
width: 125,
height: 125,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14)),
borderRadius: BorderRadius.circular(14),
color: disabledColor.withOpacity(0.8),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(14),
child: Image(
child: (categoryNonFav[i].imageUrlMedium != '')
? Image(
fit: BoxFit.fill,
image: NetworkImage(
categoryNonFav[i].imageUrlMedium,
),
)
: const Image(
fit: BoxFit.fill,
image: AssetImage('assets/noimage.png'),
),
),
),
)
......@@ -181,6 +226,12 @@ class MenuListUtama extends StatelessWidget {
const Spacer(),
GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
if (menuUtama.isSell) {
if (menuUtama.variantCat.isNotEmpty) {
if (indexListOrderan == -1) {
......@@ -282,6 +333,11 @@ class MenuListUtama extends StatelessWidget {
children: [
GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
showModalBottomSheet(
backgroundColor: backgroundColor,
isScrollControlled: true,
......@@ -330,6 +386,12 @@ class MenuListUtama extends StatelessWidget {
left: 0,
child: GestureDetector(
onTap: () {
FocusScopeNode currentFocus =
FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
if (initialValue > 0) {
initialValue -= 1;
context.read<OrdersBloc>().insertData([
......@@ -365,6 +427,12 @@ class MenuListUtama extends StatelessWidget {
right: 0,
child: GestureDetector(
onTap: () {
FocusScopeNode currentFocus =
FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus();
}
initialValue += 1;
context.read<OrdersBloc>().insertData([
[
......
......@@ -4,6 +4,7 @@ import 'package:byod/bloc/branch_exist.dart';
import 'package:byod/bloc/fav_selected_bar.dart';
import 'package:byod/bloc/menu_selected_bar.dart';
import 'package:byod/bloc/order_bloc.dart';
import 'package:byod/bloc/search_menu.dart';
import 'package:byod/helper/helper.dart';
import 'package:byod/helper/widget/style.dart';
import 'package:byod/models/filter_menu.dart';
......@@ -11,6 +12,7 @@ import 'package:byod/models/orders.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import '../../bloc/filter_menu.dart';
import '../../helper/widget/button_dialog.dart';
......@@ -42,6 +44,7 @@ class _NewHome2State extends State<NewHome2> {
final _scrollController = ScrollController();
final _scrollFavItem = ScrollController();
final _scrollMenuItem = ScrollController();
final scrollMenuItemList = ItemScrollController();
late bool isScrollableMenu = false;
// final double positionCustomScrollViewFixed = 345.5 - 10;
......@@ -67,21 +70,23 @@ class _NewHome2State extends State<NewHome2> {
setState(() {
isFirstLoad = false;
});
// double positionCustomScrollView = _scrollController.position.pixels;
// print(positionCustomScrollView);
// if (_scrollController.position.pixels >=
// (_scrollController.position.maxScrollExtent - 100)) {}
double positionCustomScrollView = _scrollController.position.pixels;
double positionCustomScrollViewMax =
_scrollController.position.maxScrollExtent;
// double positionCustomScrollView = _scrollController.position.pixels;
// double positionCustomScrollViewMax =
// _scrollController.position.maxScrollExtent;
// if (isSearchActive) {
if (positionCustomScrollView >= positionCustomScrollViewMax) {
setState(() {
isScrollableMenu = true;
});
} else {
setState(() {
isScrollableMenu = false;
});
}
// if (positionCustomScrollView >= positionCustomScrollViewMax - 50) {
// setState(() {
// isScrollableMenu = true;
// });
// } else {
// setState(() {
// isScrollableMenu = false;
// });
// }
// } else {
// if (positionCustomScrollView >=
// positionCustomScrollViewSearchFalseFixed) {
......@@ -105,39 +110,47 @@ class _NewHome2State extends State<NewHome2> {
}
}
});
_scrollMenuItem.addListener(() {
double positionMenuItemScrollView = _scrollMenuItem.position.pixels;
// _scrollMenuItem.addListener(() {
// double positionMenuItemScrollView = _scrollMenuItem.position.pixels;
double positionMenuItemScrollViewMin =
_scrollMenuItem.position.minScrollExtent;
double positionMenuItemScrollViewMax =
_scrollMenuItem.position.maxScrollExtent;
if (positionMenuItemScrollView == positionMenuItemScrollViewMin &&
_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
setState(() {
isScrollableMenu = false;
});
}
if (positionMenuItemScrollView >= positionMenuItemScrollViewMax - 100) {
if (allMenu.length >= countMenuToDisplay) {
_getMoreData(countMenuToDisplay, allMenu);
}
}
});
// double positionMenuItemScrollViewMin =
// _scrollMenuItem.position.minScrollExtent;
// double positionMenuItemScrollViewMax =
// _scrollMenuItem.position.maxScrollExtent;
// if (positionMenuItemScrollView == positionMenuItemScrollViewMin &&
// _scrollController.position.pixels ==
// _scrollController.position.maxScrollExtent) {
// setState(() {
// isScrollableMenu = false;
// });
// }
// if (positionMenuItemScrollView >= positionMenuItemScrollViewMax - 100) {
// if (allMenu.length >= countMenuToDisplay) {
// _getMoreData(countMenuToDisplay, allMenu);
// }
// }
// });
super.initState();
}
_getMoreData(int menuToDisplay, List<FilterMenu> allMenu) {
setState(() {
if ((allMenu.length - countMenuToDisplay) > maxItemMenu) {
countMenuToDisplay += maxItemMenu;
} else {
countMenuToDisplay = allMenu.length;
}
});
}
// _getMoreData(int menuToDisplay, List<FilterMenu> allMenu) {
// setState(() {
// if ((allMenu.length - countMenuToDisplay) > maxItemMenu) {
// countMenuToDisplay += maxItemMenu;
// } else {
// countMenuToDisplay = allMenu.length;
// }
// });
// }
// scrollToMenuCat(id) {
// int indexCategory = categoryNonFav.indexWhere((categoryNonFav) =>
// categoryNonFav.categoryId == id && categoryNonFav.type == typeCategory);
// if (indexCategory != -1 && isScrollableMenu) {
// scrollMenuItemList.jumpTo(index: indexCategory);
// }
// }
_getMoreDataFav(int menuToDisplay, List<FilterMenu> allMenuFav) {
setState(() {
......@@ -189,7 +202,6 @@ class _NewHome2State extends State<NewHome2> {
String userName = prefs.getString("userName") ?? "";
double widthScreen = responsiveWidthScreen(context);
double maxWidthScreen = getMaxWidthScreen(context, useResponsive);
return BlocBuilder<BranchExist, String>(
builder: (contextBracnhExist, restoran) {
void onTapOkPop() {
......@@ -248,16 +260,17 @@ class _NewHome2State extends State<NewHome2> {
"id": "0",
}; // all dulu, biar ada bisa klik all
catListTemp.add(CategoryList.createCategoryList(nn));
categoryList = catListTemp;
for (var nameCat in categoryNonFav) {
if (nameCat.type == typeCategory) {
var n = {
"id": nameCat.id,
"name": nameCat.categoryName
};
categoryList
catListTemp
.add(CategoryList.createCategoryList(n));
}
categoryList = catListTemp;
}
List<FavoriteGroup> favGroupTemp = [];
for (var nameFav in categoryFav) {
......@@ -271,14 +284,18 @@ class _NewHome2State extends State<NewHome2> {
}
favList = favGroupTemp;
if (isFirstLoad) {
if (favList.isNotEmpty) {
context
.read<FavSelectedBar>()
.selectedBarFav(0, favList[0].id);
}
if (categoryList.isNotEmpty) {
context
.read<MenuSelectedBar>()
.selectedBarMenu(0, categoryList[0].id);
}
}
}
return BlocBuilder<FavSelectedBar, List<dynamic>>(
builder: (contextFavSelectedBar, listDynamicBar) {
......@@ -294,40 +311,125 @@ class _NewHome2State extends State<NewHome2> {
categoryFavAfterSelect = temporSelectedFav;
}
return BlocBuilder<MenuSelectedBar, List<dynamic>>(
builder:
(contextSelectedBarMenu, listDynamicBarMenu) {
return BlocBuilder<SearchMenu, List<dynamic>>(
builder: (contextSearch, listSearch) {
// if (listSearch[0].isNotEmpty) {
// print(listSearch[0]);
// }
return BlocBuilder<MenuSelectedBar,
List<dynamic>>(
builder: (contextSelectedBarMenu,
listDynamicBarMenu) {
if (isSearchActive) {
if (categoryNonFav.isNotEmpty &&
categoryList.isNotEmpty) {
if (listSearch[0].length == 1 &&
listSearch[0][0].id == 'start') {
List<FilterMenu> temprSelectedMenu = [];
for (var nameCat in categoryNonFav) {
if (listDynamicBarMenu.length == 2 &&
nameCat.categoryId ==
listDynamicBarMenu[1]) {
temprSelectedMenu.add(nameCat);
}
}
if (listDynamicBarMenu.length == 2 &&
listDynamicBarMenu[0] == 0) {
categoryMenuAfterSelect =
categoryNonFav;
} else {
categoryMenuAfterSelect =
temprSelectedMenu;
}
} else {
// for (var nameCatSearch
// in listSearch[0]) {
// if (listDynamicBarMenu.length == 2) {
// if (listDynamicBarMenu[1] != "0" &&
// nameCatSearch.categoryId ==
// listDynamicBarMenu[1]) {
// temprSearchMenu
// .add(nameCatSearch);
// }
// }
// }
if (listDynamicBarMenu[1] != "0") {
List<FilterMenu> temprSearchMenu = [];
for (var nameMenuSearch
in listSearch[0]) {
if (listDynamicBarMenu[1] ==
nameMenuSearch.categoryId) {
temprSearchMenu
.add(nameMenuSearch);
}
}
categoryMenuAfterSelect =
temprSearchMenu;
} else {
categoryMenuAfterSelect =
listSearch[0];
}
// if (listDynamicBarMenu.length == 2 &&
// listDynamicBarMenu[0] == 0) {
// categoryMenuAfterSelect =
// categoryNonFav;
// } else {
// categoryMenuAfterSelect =
// temprSelectedMenu;
// }
}
// if (listDynamicBarMenu.length == 2 &&
// isScrollableMenu == true &&
// _scrollController.position.pixels ==
// _scrollController
// .position.maxScrollExtent &&
// _scrollMenuItem.position.pixels > 0) {
// _scrollMenuItem.animateTo(
// 1,
// duration:
// Duration(milliseconds: animatedTime),
// curve: Curves.fastOutSlowIn,
// );
// }
}
} else {
if (categoryNonFav.isNotEmpty &&
categoryList.isNotEmpty) {
List<FilterMenu> temprSelectedMenu = [];
for (var nameCat in categoryNonFav) {
if (listDynamicBarMenu.length == 2 &&
nameCat.categoryName ==
nameCat.categoryId ==
listDynamicBarMenu[1]) {
temprSelectedMenu.add(nameCat);
}
}
if (listDynamicBarMenu.length == 2 &&
listDynamicBarMenu[0] == 0) {
categoryMenuAfterSelect = categoryNonFav;
categoryMenuAfterSelect =
categoryNonFav;
} else {
categoryMenuAfterSelect = temprSelectedMenu;
categoryMenuAfterSelect =
temprSelectedMenu;
}
// if (listDynamicBarMenu.length == 2 &&
// listDynamicBarMenu[1] != "0" &&
// isScrollableMenu == true &&
// _scrollController.position.pixels ==
// _scrollController
// .position.maxScrollExtent &&
// _scrollMenuItem.position.pixels > 0) {
// _scrollMenuItem.animateTo(
// 10,
// 1,
// duration:
// Duration(milliseconds: animatedTime),
// curve: Curves.fastOutSlowIn,
// );
// }
}
}
return BlocBuilder<OrdersBloc, List<Orders>>(
builder: (contextOrders, listOrders) {
int totalItem = 0;
......@@ -345,7 +447,9 @@ class _NewHome2State extends State<NewHome2> {
i++) {
// totalItem += listOrders[i].totalItem;
// check apakah ada order detail. kalau ada rekalkulasi total harga sesuai order detail
if (listOrders[i].orderDetail.isEmpty) {
if (listOrders[i]
.orderDetail
.isEmpty) {
totalHargaBukanOrderDetail +=
(listOrders[i].totalItem *
listOrders[i].totalHarga);
......@@ -358,14 +462,17 @@ class _NewHome2State extends State<NewHome2> {
.orderDetail
.length;
kk++) {
totalHargaOrderDetail += listOrders[i]
totalHargaOrderDetail +=
listOrders[i]
.orderDetail[kk]
.totalHarga;
totalItemOrderDetail += listOrders[i]
totalItemOrderDetail +=
listOrders[i]
.orderDetail[kk]
.totalItem;
}
fixTotalHarga = totalHargaOrderDetail;
fixTotalHarga =
totalHargaOrderDetail;
fixTotalItem = totalItemOrderDetail;
}
}
......@@ -374,16 +481,98 @@ class _NewHome2State extends State<NewHome2> {
totalItem = fixTotalItem +
totalItemBukanOrderDetail;
}
return ScreenResponsive(
widget: coreHome(
context,
widthScreen,
maxWidthScreen,
paddingLeftRight,
appBarHeight,
tableNumber,
userName,
searchFieldHeight,
spacerHeight,
favListHeight,
favItemHeight,
spacerAboveCat,
spacerAboveCatList,
catListHeight,
spacerAboveMenuItem,
heightLeft,
totalItem,
listOrders,
totalHarga,
tableMode,
),
widthScreen:
MediaQuery.of(context).size.width,
isCoreLayout: true,
);
},
);
},
);
},
);
});
},
)
: (restoran == responseByodInActive)
? errorResponseByod(
"Byod tidak aktif, untuk melakukan pesanan silakan memanggil waiter")
: (restoran == responseApiNoSuccess)
? errorResponseByod(
"Scan QR Atau Kunjungi Alamat Outlet")
: (restoran == responseApiErrorServer)
? errorResponseByod(
"Something Went Wrong With Our Server")
: (restoran == responseApiWaiting)
? ScreenResponsive(
widget: ShimmerMenu(
widthScreen: widthScreen,
maxWidthScreen: maxWidthScreen,
context: context),
widthScreen:
MediaQuery.of(context).size.width,
isCoreLayout: true,
)
: const SizedBox(),
),
),
);
},
);
}
Stack coreHome(
BuildContext context,
double widthScreen,
double maxWidthScreen,
double paddingLeftRight,
double appBarHeight,
String tableNumber,
String userName,
double searchFieldHeight,
double spacerHeight,
double favListHeight,
double favItemHeight,
double spacerAboveCat,
double spacerAboveCatList,
double catListHeight,
double spacerAboveMenuItem,
double heightLeft,
int totalItem,
List<Orders> listOrders,
int totalHarga,
int tableMode) {
return Stack(
children: [
Container(
height:
MediaQuery.of(context).size.height,
margin: EdgeInsets.symmetric(
horizontal: paddingLeftRight),
width: widthScreen,
height: MediaQuery.of(context).size.height,
padding: EdgeInsets.symmetric(horizontal: paddingLeftRight),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
customAppBar(
context,
......@@ -393,21 +582,17 @@ class _NewHome2State extends State<NewHome2> {
userName,
),
SizedBox(
height:
(isSearchActive) ? 16 : 20,
height: (isSearchActive) ? 16 : 20,
),
AnimatedSwitcher(
duration: Duration(
milliseconds: animatedTime),
transitionBuilder: (Widget child,
Animation<double> animation) {
return ScaleTransition(
scale: animation,
child: child);
duration: Duration(milliseconds: animatedTime),
transitionBuilder: (Widget child, Animation<double> animation) {
return ScaleTransition(scale: animation, child: child);
},
child: (isSearchActive)
? searchField(
searchFieldHeight,
categoryNonFav,
)
: const SizedBox(
key: Key('SearchField'),
......@@ -419,73 +604,71 @@ class _NewHome2State extends State<NewHome2> {
slivers: [
SliverToBoxAdapter(
child: SizedBox(
height: (isSearchActive)
? spacerHeight
: 0,
height: (isSearchActive) ? spacerHeight : 0,
),
),
SliverToBoxAdapter(
child: Container(
child: (favList.isNotEmpty)
? Container(
height: favListHeight,
child: FavoriteList(
favoriteList: favList,
),
)
: const SizedBox(),
),
),
const SliverToBoxAdapter(
SliverToBoxAdapter(
child: SizedBox(
height: 13.5,
height: (categoryFavAfterSelect.isNotEmpty) ? 13.5 : 0,
),
),
SliverToBoxAdapter(
child: Container(
child: (categoryFavAfterSelect.isNotEmpty)
? Container(
height: favItemHeight,
child: ListView.builder(
controller:
_scrollFavItem,
scrollDirection:
Axis.horizontal,
itemCount: (categoryFavAfterSelect
.length) >
controller: _scrollFavItem,
scrollDirection: Axis.horizontal,
itemCount: (categoryFavAfterSelect.length) >
countMenuFavToDisplay
? countMenuFavToDisplay
: categoryFavAfterSelect
.length,
itemBuilder:
(context, i) {
double
paddingLeftRigthGrid =
9;
double widthGrid =
136;
: categoryFavAfterSelect.length,
itemBuilder: (context, i) {
double paddingLeftRigthGrid = 9;
double widthGrid = 136;
return FavGridMenu(
categoryFavAfterSelect:
categoryFavAfterSelect,
widthGrid:
widthGrid,
paddingLeftRigthGrid:
paddingLeftRigthGrid,
widthGrid: widthGrid,
paddingLeftRigthGrid: paddingLeftRigthGrid,
i: i,
);
}),
},
),
)
: const SizedBox(),
),
SliverToBoxAdapter(
child: SizedBox(
height: spacerAboveCat,
height: (categoryFavAfterSelect.isNotEmpty)
? spacerAboveCat
: 0,
),
),
SliverToBoxAdapter(
child: defaultText(
child: (categoryFavAfterSelect.isNotEmpty)
? defaultText(
context,
'Category',
style: categoryStyle(),
),
)
: const SizedBox(),
),
SliverToBoxAdapter(
child: SizedBox(
height:
spacerAboveCatList,
height: (categoryFavAfterSelect.isNotEmpty)
? spacerAboveCatList
: 0,
),
),
SliverPersistentHeader(
......@@ -493,45 +676,54 @@ class _NewHome2State extends State<NewHome2> {
delegate: Delegate(
catListHeight,
categoryList,
_scrollController,
favList,
),
),
SliverToBoxAdapter(
child: SizedBox(
height:
spacerAboveMenuItem,
height: spacerAboveMenuItem,
),
),
SliverToBoxAdapter(
child: Container(
height: heightLeft,
child: ListView.builder(
controller:
(isScrollableMenu)
? _scrollMenuItem
: null,
physics: (!isScrollableMenu)
? const NeverScrollableScrollPhysics()
: null,
shrinkWrap:
(isScrollableMenu)
? true
: false,
itemCount: (categoryMenuAfterSelect
.length) >
countMenuToDisplay
? countMenuToDisplay
: categoryMenuAfterSelect
.length,
itemBuilder:
(context, i) {
// SliverToBoxAdapter(
// child: Container(
// height: heightLeft,
// child: ListView.builder(
// controller:
// (isScrollableMenu) ? _scrollMenuItem : null,
// // itemScrollController:
// // (isScrollableMenu) ? scrollMenuItemList : null,
// physics: (!isScrollableMenu)
// ? const NeverScrollableScrollPhysics()
// : null,
// shrinkWrap: (isScrollableMenu) ? true : false,
// // itemCount: (categoryMenuAfterSelect.length) >
// // countMenuToDisplay
// // ? countMenuToDisplay
// // : categoryMenuAfterSelect.length,
// itemCount: categoryMenuAfterSelect.length,
// itemBuilder: (context, i) {
// return MenuListUtama(
// categoryNonFav: categoryMenuAfterSelect,
// i: i,
// );
// },
// ),
// ),
// ),
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return MenuListUtama(
categoryNonFav:
categoryMenuAfterSelect,
i: i,
categoryNonFav: categoryMenuAfterSelect,
i: index,
widthScreen: widthScreen,
scrollController: _scrollController,
);
},
childCount: categoryMenuAfterSelect.length,
),
),
)),
],
),
),
......@@ -539,12 +731,9 @@ class _NewHome2State extends State<NewHome2> {
),
),
AnimatedSwitcher(
duration: Duration(
milliseconds: animatedTime),
transitionBuilder: (Widget child,
Animation<double> animation) {
return ScaleTransition(
scale: animation, child: child);
duration: Duration(milliseconds: animatedTime),
transitionBuilder: (Widget child, Animation<double> animation) {
return ScaleTransition(scale: animation, child: child);
},
child: (totalItem > 0)
? goTocheckOut(
......@@ -562,44 +751,21 @@ class _NewHome2State extends State<NewHome2> {
)
],
);
},
);
},
);
});
},
)
: (restoran == responseByodInActive)
? errorResponseByod(
"Byod tidak aktif, untuk melakukan pesanan silakan memanggil waiter")
: (restoran == responseApiNoSuccess)
? errorResponseByod(
"Scan QR Atau Kunjungi Alamat Outlet")
: (restoran == responseApiErrorServer)
? errorResponseByod(
"Something Went Wrong With Our Server")
: (restoran == responseApiWaiting)
? ScreenResponsive(
widget: ShimmerMenu(
widthScreen: widthScreen,
maxWidthScreen: maxWidthScreen,
context: context),
widthScreen:
MediaQuery.of(context).size.width,
isCoreLayout: true,
)
: const SizedBox(),
),
),
);
},
);
}
SizedBox searchField(double searchFieldHeight) {
return SizedBox(
Container searchField(
double searchFieldHeight, List<FilterMenu> categoryNonFav) {
return Container(
margin: const EdgeInsets.only(bottom: 5),
height: searchFieldHeight,
child: TextField(
onChanged: (sarchValue) {
context.read<SearchMenu>().searchMenu(
categoryNonFav,
keyword: sarchValue.toString(),
isSearch: true,
);
},
key: const Key('SearchField'),
style: TextStyle(
color: Colors.black,
......@@ -607,6 +773,8 @@ class _NewHome2State extends State<NewHome2> {
fontSize: 15,
),
decoration: InputDecoration(
filled: true,
fillColor: Colors.white,
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
width: 1,
......@@ -857,159 +1025,6 @@ class _NewHome2State extends State<NewHome2> {
);
}
// Container girdFavItem(
// List<FilterMenu> favListItem,
// int i,
// double widthGrid,
// double paddingLeftRigthGrid,
// BuildContext context,
// ) {
// bool addCondition = true;
// return Container(
// margin: EdgeInsets.only(
// left: (i == 0) ? 0 : 8, // paling awal gausah dikasih margin
// right: (i == favListItem.length - 1)
// ? 0
// : 8, // paling akhir gausah dikasi margin
// ),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(5),
// color: gridCardBackgroundColor,
// ),
// height: double.infinity,
// width: widthGrid,
// child: Container(
// margin: EdgeInsets.only(
// top: 8,
// left: paddingLeftRigthGrid,
// right: paddingLeftRigthGrid,
// bottom: 16,
// ),
// // color: Colors.red,
// child: Column(
// children: [
// Container(
// width: widthGrid - (2 * paddingLeftRigthGrid),
// height: widthGrid - (2 * paddingLeftRigthGrid),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(8),
// // color: Colors.red,
// ),
// child: ClipRRect(
// borderRadius: BorderRadius.circular(8),
// child: Image(
// fit: BoxFit.fill,
// image: NetworkImage(favListItem[i].imageUrlMedium),
// ),
// ),
// ),
// const SizedBox(
// height: 3,
// ),
// Container(
// width: widthGrid - (2 * paddingLeftRigthGrid),
// height: 28,
// // color: Colors.blue,
// child: Row(
// crossAxisAlignment: CrossAxisAlignment.end,
// children: [
// Expanded(
// child: defaultText(
// context,
// favListItem[i].name,
// maxLines: 2,
// overFlow: TextOverflow.ellipsis,
// style: menuNameGridFav(),
// ),
// ),
// Container(
// width: 40,
// child: defaultText(
// context,
// 'Rp ${formatNumber().format(amountParseToInt(favListItem[i].price))}',
// maxLines: 3,
// overFlow: TextOverflow.ellipsis,
// style: menuPriceGridFav(),
// ),
// )
// ],
// ),
// ),
// const SizedBox(
// height: 16,
// ),
// (addCondition)
// ? Container(
// height: 30,
// width: widthGrid - (2 * paddingLeftRigthGrid),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(6),
// color: buttonColor,
// ),
// child: Center(
// child: defaultText(
// context,
// 'Tambah',
// style: addButtonGridFav(),
// ),
// ),
// )
// : Container(
// height: 30,
// width: widthGrid - (2 * paddingLeftRigthGrid),
// child: Row(
// children: [
// Container(
// width: 27,
// height: 24,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(6),
// color: buttonColor,
// ),
// child: const Center(
// child: Image(
// width: 13.33,
// height: 13.33,
// color: textInButton,
// image: AssetImage('assets/icons/note.png'),
// ),
// ),
// ),
// const SizedBox(
// width: 5,
// ),
// Container(
// width: 22,
// height: 22,
// child: const Image(
// image: AssetImage('assets/icons/minus.png'),
// ),
// ),
// Expanded(
// child: Center(
// child: defaultText(
// context,
// '10',
// style: amountGridFav(),
// ),
// ),
// ),
// Container(
// width: 22,
// height: 22,
// child: const Image(
// image: AssetImage('assets/icons/plus.png'),
// ),
// )
// ],
// ),
// )
// ],
// ),
// ),
// );
// }
Container customAppBar(BuildContext context, double paddingLeftRight,
double appBarHeight, String tableNumber, String userName) {
String barName;
......@@ -1019,8 +1034,6 @@ class _NewHome2State extends State<NewHome2> {
barName = "Meja $tableNumber";
}
return Container(
// color: Colors.red,
margin: EdgeInsets.symmetric(horizontal: paddingLeftRight),
height: appBarHeight,
child: Row(
children: [
......@@ -1115,15 +1128,28 @@ class _NewHome2State extends State<NewHome2> {
class Delegate extends SliverPersistentHeaderDelegate {
final double catListHeight;
final ScrollController scrollController;
// final ScrollController scrollControllerMenu;
final List<CategoryList> categoryList;
Delegate(this.catListHeight, this.categoryList);
final List<FavoriteGroup> favList;
Delegate(
this.catListHeight,
this.categoryList,
this.scrollController,
this.favList,
// this.scrollControllerMenu,
);
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return Container(
color: backgroundColor,
height: catListHeight,
child: CategoryListHome(
categoryList: categoryList,
scrollController: scrollController,
favList: favList,
// scrollControllerMenu: scrollControllerMenu,
),
);
}
......
......@@ -261,6 +261,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.3"
scrollable_positioned_list:
dependency: "direct main"
description:
name: scrollable_positioned_list
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.4"
shared_preferences:
dependency: "direct main"
description:
......
......@@ -34,6 +34,7 @@ dependencies:
http: ^0.13.4
intl: ^0.17.0
loading_animations: ^2.2.0
scrollable_positioned_list: ^0.3.4
shared_preferences: ^2.0.15
shimmer: ^2.0.0
url_launcher: ^6.1.5
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment