// ignore_for_file: must_be_immutable, sized_box_for_whitespace

import 'dart:convert';

import 'package:byod/bloc/filter_menu.dart';
import 'package:byod/bloc/member_info.dart';
import 'package:byod/helper/helper.dart';
import 'package:byod/ui/home/shimmer_menu_new.dart';
import 'package:byod/ui/no_route.dart';
import 'package:byod/ui/viewbill/view_bill_new.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

import '../bloc/branch_exist.dart';
import '../helper/mq.dart';
import '../main.dart';
import 'package:flutter/services.dart' as bundle_root;
import 'home/new_home2.dart';
import 'home/shimmer_menu.dart';
import 'screen_responsive.dart';

class Splash extends StatefulWidget {
  final String param, brand, tn, role, cashierName, toBill, sessionId, token;
  const Splash(
      {Key? key,
      required this.param,
      required this.brand,
      required this.tn,
      required this.role,
      required this.cashierName,
      required this.toBill,
      required this.sessionId,
      required this.token})
      : super(key: key);

  @override
  State<Splash> createState() => _SplashState();
}

class _SplashState extends State<Splash> {
  Future<String> loadBaseUrl() async {
    String data;
    try {
      String datas = await bundle_root.rootBundle.loadString('config.json');
      data = jsonDecode(datas)['base_url'].toString();
      return data;
    } catch (e) {
      navigatorKey.currentState?.push(MaterialPageRoute(
          builder: (context) => NoRoute(
                identification: 'configError',
              )));
      return '';
    }
  }

  @override
  void initState() {
    loadBaseUrl().then((baseUrl) {
      prefs.setString('baseUrl', baseUrl);
      context.read<BranchExist>().branchExist(
            context,
            widget.param,
            widget.brand,
            widget.role,
            widget.cashierName,
            widget.sessionId,
            getMenu: true,
            token: widget.token,
          );
      // context.read<CategoryMenu>().catAndMenu(widget.param, widget.brand,
      //     widget.role, widget.cashierName, widget.token);

      // context.read<FilterMenuBloc>().catAndMenu(widget.param, widget.brand,
      //     widget.role, widget.cashierName, widget.token);

      if (widget.token != '') {
        context.read<MemberInfoBloc>().getMemberInfo(widget.token);
      }
      Future.delayed(const Duration(milliseconds: 1000), () async {
        await prefs.setString('token', widget.token);
        await prefs.setString('outlet', widget.param);
        await prefs.setString('brand', widget.brand);
        await prefs.setString('table_number', widget.tn);
        await prefs.setString('role', widget.role);
        await prefs.setString('cashier_name', widget.cashierName);
        // ignore: use_build_context_synchronously

        if (widget.toBill == 'go') {
          // ignore: use_build_context_synchronously
          Navigator.pushReplacement(
              context, MaterialPageRoute(builder: (_) => const ViewBillNew()));
        } else {
          // ignore: use_build_context_synchronously
          // Navigator.pushReplacement(
          //     context, MaterialPageRoute(builder: (_) => const Home()));
          // ignore: use_build_context_synchronously
          Navigator.pushReplacement(
              context, MaterialPageRoute(builder: (_) => const NewHome2()));
        }
      });
    });

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    double widthScreen = responsiveWidthScreen(context);
    double maxWidthScreen = getMaxWidthScreen(context, useResponsive);
    return SafeArea(
      child: Scaffold(
        backgroundColor: backgroundColor,
        // body: Center(
        //   child: Column(
        //     mainAxisAlignment: MainAxisAlignment.center,
        //     children: [
        //       // Text(
        //       //   "Membuka Menu....",
        //       //   // style: TextStyle(
        //       //   //   fontSize: MediaQuery.of(context).size.height * 0.03,
        //       //   //   fontWeight: FontWeight.w500,
        //       //   //   color: buttonColor,
        //       //   //   decoration: TextDecoration.none,
        //       //   // ),
        //       //   style: textStyleMenuList(
        //       //     context,
        //       //     textColor: buttonColor,
        //       //   ),
        //       // ),
        //       defaultText(
        //         context,
        //         "Membuka Menu....",
        //         style: textStyleMenuList(context, textColor: buttonColor),
        //       ),
        //       LoadingBumpingLine.circle(
        //         size: MediaQuery.of(context).size.height * 0.1,
        //         backgroundColor: buttonColor,
        //       )
        //       // ShimmerSplash(
        //       //   widthScreen: widthScreen,
        //       //   maxWidthScreen: maxWidthScreen,
        //       // )
        //     ],
        //   ),
        // ),
        body: ScreenResponsive(
          widget: const ShimmerMenuNew(),
          widthScreen: MediaQuery.of(context).size.width,
          isCoreLayout: true,
        ),
      ),
    );
  }
}

// class ShimmerSplash extends StatelessWidget {
//   double widthScreen;
//   double maxWidthScreen;
//   ShimmerSplash({
//     Key? key,
//     required this.maxWidthScreen,
//     required this.widthScreen,
//   }) : super(key: key);

//   @override
//   Widget build(BuildContext context) {
//     return Shimmer.fromColors(
//       baseColor: disabledColor,
//       highlightColor: buttonColor,
//       child: SingleChildScrollView(
//         child: Column(
//           children: [
//             Stack(
//               children: [
//                 Column(
//                   children: [
//                     customAppbar(
//                       context,
//                       widthScreen,
//                       maxWidthScreen,
//                     ),
//                     Container(
//                         height: MediaQuery.of(context).size.height * 0.865,
//                         width: widthScreen,
//                         // color: Colors.red,
//                         child: ListView(
//                           children: [
//                             listViewCategory(
//                               widthScreen,
//                             ),
//                           ],
//                         )),
//                   ],
//                 ),
//               ],
//             ),
//           ],
//         ),
//       ),
//     );
//   }

//   ListView listViewCategory(double widthScreen) {
//     return ListView.builder(
//       physics:
//           const NeverScrollableScrollPhysics(), // to disable GridView's scrolling
//       shrinkWrap: true,
//       itemCount: 3,
//       itemBuilder: (context, i) {
//         return Column(
//           children: [
//             Align(
//               alignment: Alignment.centerLeft,
//               child: Container(
//                 height: MediaQuery.of(context).size.height * 0.06,
//                 width: widthScreen * 0.2,
//                 decoration: BoxDecoration(
//                   borderRadius: BorderRadius.circular(roundedButton),
//                   // color: Colors.red,
//                 ),
//                 // color: Colors.green,
//                 // child: Align(
//                 //   alignment: Alignment.centerLeft,
//                 //   child: textCategory(
//                 //     context,
//                 //     categoryMenu[i].name,
//                 //   ),
//                 //   // child: Text(
//                 //   //   categoryMenu[i].name,
//                 //   //   // style: TextStyle(
//                 //   //   //     fontSize:
//                 //   //   //         MediaQuery.of(context).size.height * categoryFont,
//                 //   //   //     fontWeight: FontWeight.w600),
//                 //   //   style: textStyleCategoryMenu(context),
//                 //   // ),
//                 // ),
//               ),
//             ),
//             SizedBox(
//               height: MediaQuery.of(context).size.height * 0.015,
//             ),
//             listViewMenu(widthScreen)
//           ],
//         );
//       },
//     );
//   }

//   ListView listViewMenu(double widthScreen) {
//     return ListView.builder(
//         // controller: _scrollController,
//         physics:
//             const NeverScrollableScrollPhysics(), // to disable GridView's scrolling
//         shrinkWrap: true,
//         itemCount: 5, // harus sama dengan item count dibawah, tujuan layouting
//         itemBuilder: (context, d) {
//           return MenuView(
//             isHaveItem: false,
//             id: '',
//             itemKe: 0,
//             itemCount:
//                 5, // harus sama dengan item count diatas, tujuan layouting
//             namaMenu: '',
//             hargaCoret: 0,
//             hargaFix: 0,
//             imageUrl: '',
//             isHaveVariant: false,
//             variantCat: const [],
//             isSell: false,
//             widthScreenParent: widthScreen,
//             isShimmer: true,
//           );
//         });
//   }

//   Shimmer customAppbar(
//     BuildContext context,
//     double widthScreen,
//     double maxWidthScreen,
//   ) {
//     FocusScopeNode currentFocus = FocusScope.of(context);
//     return Shimmer.fromColors(
//       baseColor: Colors.grey,
//       highlightColor: buttonColor,
//       child: Container(
//         height: MediaQuery.of(context).size.height * 0.12,
//         // color: Colors.amber,
//         width: (widthScreen > maxWidthScreen) ? maxWidthScreen : widthScreen,
//         child: Column(
//           children: [
//             Container(
//               height: MediaQuery.of(context).size.height * 0.07,
//               child: Row(
//                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
//                 children: [
//                   // Container(
//                   //   // color: Colors.white,
//                   //   height: double.infinity,
//                   //   width: MediaQuery.of(context).size.width * 0.2,
//                   //   child: const Icon(Icons.arrow_back_ios_new_rounded),
//                   // ),
//                   Container(
//                     color: Colors.red,
//                     height: double.infinity,
//                     width: widthScreen * 0.58,
//                     // child: Align(
//                     //   alignment: Alignment.centerLeft,
//                     //   child: defaultText(context, barName,
//                     //       overFlow: TextOverflow.ellipsis,
//                     //       style: textStyleMenuList(context)),
//                     // ),
//                   ),
//                   GestureDetector(
//                     onTap: () {
//                       // setState(() {
//                       //   isSearch = !isSearch;
//                       //   if (isSearch == false) {
//                       //     currentFocus.unfocus();
//                       //     searchController.text = '';
//                       //   }
//                       // });
//                     },
//                     child: Container(
//                       color: Colors.blue,
//                       height: double.infinity,
//                       width: widthScreen * 0.1,
//                     ),
//                   ),
//                   GestureDetector(
//                     onTap: () {
//                       // setState(() {
//                       //   isSearch = !isSearch;
//                       //   if (isSearch == false) {
//                       //     currentFocus.unfocus();
//                       //     searchController.text = '';
//                       //   }
//                       // });
//                     },
//                     child: Container(
//                       color: Colors.blue,
//                       height: double.infinity,
//                       width: widthScreen * 0.17,
//                     ),
//                   )
//                 ],
//               ),
//             ),
//             Container(
//               height: MediaQuery.of(context).size.height * 0.04,
//               // color: Colors.red,
//               child: Row(
//                 children: [
//                   Container(
//                     // color: Colors.blue,
//                     width: widthScreen * 0.915,
//                     child: ListView.builder(
//                         scrollDirection: Axis.horizontal,
//                         itemCount: 4,
//                         itemBuilder: (context, i) {
//                           return GestureDetector(
//                             onTap: () {},
//                             child: Container(
//                               // width: MediaQuery.of(context).size.width * 0.25,
//                               width: widthScreen * 0.3,
//                               padding: EdgeInsets.all(
//                                   MediaQuery.of(context).size.height * 0.01),
//                               margin: EdgeInsets.only(
//                                   left: (i == 0) ? 0 : widthScreen * 0.007,
//                                   right:
//                                       (i == 4 - 1) ? 0 : widthScreen * 0.007),
//                               height: double.infinity,
//                               // color: Colors.blue,
//                               decoration: BoxDecoration(
//                                   borderRadius:
//                                       BorderRadius.circular(roundedButton),
//                                   color: Colors.black
//                                   // color:
//                                   //     (selectedCategory[1] == categoryList[i].name)
//                                   //         ? selectedColor
//                                   //         : buttonColor,
//                                   ),
//                               // child: Center(
//                               //     // child: Text(categoryList[i].name,
//                               //     //     // style: TextStyle(
//                               //     //     //     fontSize:
//                               //     //     //         MediaQuery.of(context).size.height *
//                               //     //     //             categoryListFont,
//                               //     //     //     color: (selectedCategory[1] ==
//                               //     //     //             categoryList[i].name)
//                               //     //     //         ? const Color.fromARGB(
//                               //     //     //             255, 225, 250, 5)
//                               //     //     //         : textInButton,
//                               //     //     //     fontWeight: FontWeight.w600),
//                               //     //     style: textStyleSelectedCategory(
//                               //     //       context,
//                               //     //     )
//                               //     //     )
//                               //     child:
//                               //         defaultText(context, categoryList[i].name,
//                               //             style: textStyleSelectedCategory(
//                               //               context,
//                               //             ))),
//                             ),
//                           );
//                         }),
//                   )
//                 ],
//               ),
//               // child: ListView.builder(itemBuilder: ),
//             )
//           ],
//         ),
//       ),
//     );
//   }
// }
