diff --git a/lib/components/menu.dart b/lib/components/menu.dart index 5182f08..cfb1b3d 100644 --- a/lib/components/menu.dart +++ b/lib/components/menu.dart @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; import 'package:nekoya_app/data/auth.dart'; import 'package:nekoya_app/screens/products.dart'; +import 'package:nekoya_app/screens/discounts.dart'; import 'package:nekoya_app/screens/cart.dart'; -import 'package:nekoya_app/screens/sessions.dart'; import 'package:nekoya_app/screens/transactions.dart'; import 'package:nekoya_app/screens/home.dart'; @@ -25,7 +25,7 @@ class _MenuState extends State { @override void initState() { if (widget.initialScreen == 0) { - _selectedWidget = const Sessions(); + _selectedWidget = const Discounts(); } else if (widget.initialScreen == 1) { _selectedWidget = const Products(); } else if (widget.initialScreen == 2) { @@ -45,7 +45,7 @@ class _MenuState extends State { body: _selectedWidget, bottomNavigationBar: Navigation( itemIcons: const [ - Icons.settings, + Icons.percent, Icons.list_alt_rounded, Icons.shopping_cart, Icons.wysiwyg @@ -62,15 +62,8 @@ class _MenuState extends State { var oldSelectedIndex = _selectedIndex; _selectedIndex = index; if (index == 0) { - _selectedWidget = const Sessions(); - checkSessionExist().then((isLoggedIn) { - if (!isLoggedIn) { - _selectedIndex = oldSelectedIndex; - Navigator.of(context).pushReplacement(MaterialPageRoute( - builder: (context) => const Menu(initialScreen: 2))); - Navigator.pushNamed(context, '/login'); - } - }); + html.window.history.pushState(null, '', '/#/discount'); + _selectedWidget = const Discounts(); } else if (index == 1) { html.window.history.pushState(null, '', '/#/products'); _selectedWidget = const Products(); diff --git a/lib/main.dart b/lib/main.dart index c1ada80..cd20c82 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -62,13 +62,12 @@ class _NekoyaState extends State { '/products': (context) => const Menu( initialScreen: 1, ), + '/discount': (context) => const Menu( + initialScreen: 0, + ), '/cart': (context) => const Menu( initialScreen: 3, ), - '/sessions': (context) => const NavigationAuth( - route: Menu( - initialScreen: 0, - )), '/transactions': (context) => const NavigationAuth( route: Menu( initialScreen: 4, diff --git a/lib/screens/discounts.dart b/lib/screens/discounts.dart new file mode 100644 index 0000000..edb2808 --- /dev/null +++ b/lib/screens/discounts.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; + +import 'package:nekoya_app/api/api.dart'; +import 'package:nekoya_app/components/product_box.dart'; +import 'package:nekoya_app/components/product_detail.dart'; +import 'package:nekoya_app/utils/utils.dart' + show kMobileBreakpoint, kTabletBreakpoint, kDesktopBreakPoint; + +class Discounts extends StatefulWidget { + const Discounts({Key? key}) : super(key: key); + + @override + State createState() => _DiscountsState(); +} + +class _DiscountsState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: const Color(0xff1b1c1e), + appBar: AppBar( + title: const Text('Discounts'), + centerTitle: true, + backgroundColor: const Color(0xff212226), + automaticallyImplyLeading: false, + ), + body: LayoutBuilder(builder: (context, dimension) { + int gridCount = 2; + double fontSize = 14.0; + + if (dimension.maxWidth <= kMobileBreakpoint) { + gridCount = 2; + fontSize = 14.0; + } else if (dimension.maxWidth > kMobileBreakpoint && + dimension.maxWidth <= kTabletBreakpoint) { + gridCount = 4; + fontSize = 15.0; + } else if (dimension.maxWidth > kTabletBreakpoint && + dimension.maxWidth <= kDesktopBreakPoint) { + gridCount = 5; + fontSize = 10.0; + } else { + gridCount = 6; + fontSize = 10.0; + } + + return FutureBuilder( + future: getProducts(), + builder: (context, snapshot) { + if (snapshot.hasData) { + List data = snapshot.data; + + List currentData = []; + for (var product in data) { + if (product['DISCOUNT'] != 0) { + currentData.add(product); + } + } + + return GridView.count( + crossAxisCount: gridCount, + children: List.generate(currentData.length, (index) { + return ProductBox( + imageUrl: + "https://nekoya.moe.team/img/${currentData[index]['IMAGE']}", + title: currentData[index]['TITLE'], + discount: currentData[index]['DISCOUNT'], + fontSize: fontSize, + callback: () { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (context) => + productDetail(context, currentData[index]['ID']), + ); + }, + ); + }), + ); + } + + return const Center( + child: CircularProgressIndicator( + color: Color(0xff8B0000), + ), + ); + }, + ); + }), + ); + } +}