import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:generp/screens/screensExports.dart'; import 'package:provider/provider.dart'; import '../../Notifiers/ordersProvider/pagesDashboardProvider.dart'; import '../../Utils/app_colors.dart'; import '../../Utils/commonServices.dart'; import '../../Utils/commonWidgets.dart'; import 'addTpcAgent.dart'; class Ordermoduledashboard extends StatefulWidget { const Ordermoduledashboard({super.key}); @override State createState() => _OrdermoduledashboardState(); } class _OrdermoduledashboardState extends State { Map _source = {ConnectivityResult.mobile: true}; final MyConnectivity _connectivity = MyConnectivity.instance; @override void initState() { // TODO: implement initState super.initState(); _connectivity.initialise(); _connectivity.myStream.listen((source) { setState(() => _source = source); }); WidgetsBinding.instance.addPostFrameCallback((timeStamp) { var provider = Provider.of( context, listen: false, ); provider.orderDashboardAPIFunction(context, "executive", "", "", ""); provider.ordersAccessiblePagesAPIFunction(context); }); } @override void dispose() { // TODO: implement dispose super.dispose(); _connectivity.disposeStream(); } @override Widget build(BuildContext context) { switch (_source.keys.toList()[0]) { case ConnectivityResult.mobile: connection = 'Online'; break; case ConnectivityResult.wifi: connection = 'Online'; break; case ConnectivityResult.none: default: connection = 'Offline'; } return (connection == 'Online') ? Platform.isAndroid ? WillPopScope( onWillPop: () => onBackPressed(context), child: SafeArea( top: false, bottom: true, child: _scaffold(context), ), ) : _scaffold(context) : NoNetwork(context); } Widget _scaffold(BuildContext context) { return Consumer( builder: (context, provider, child) { final pages = provider.ordersAccessiblePagesList; return Scaffold( resizeToAvoidBottomInset: true, backgroundColor: AppColors.scaffold_bg_color, appBar: appbar(context, "Orders"), body: Container( child: SingleChildScrollView( child: Column( children: [ if (provider.ordersgain.length > 0) ...[ Container( padding: EdgeInsets.symmetric( horizontal: 10, vertical: 5, ), margin: EdgeInsets.symmetric(horizontal: 0, vertical: 10), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), ), height: MediaQuery.of(context).size.height * 0.28, child: GridView.builder( padding: EdgeInsets.symmetric( horizontal: 0, vertical: 5, ), itemCount: provider.ordersgain.length, shrinkWrap: true, scrollDirection: Axis.horizontal, physics: AlwaysScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 10, mainAxisSpacing: 10, childAspectRatio: 0.65, ), itemBuilder: (context, jndex) { final icons = ["comm_ic_1", "comm_ic_2"]; final leadTitles = [ 'Order Gain', 'Dispatched', 'Pending Tasks', 'Quote', ]; final colors = [ 0xFFE7FFE5, 0xFFF3EDFF, 0xFFFFFCD5, 0xFFFFF6F0, ]; final textcolors = [ 0xFF0D9C00, 0xFF493272, 0xFF605C00, 0xFF91481B, ]; return InkResponse( onTap: () async { if (provider.ordersgain[jndex].filter!.pageName != "") { if (provider.ordersgain[jndex].filter!.pageName! .contains("Order List")) { // await Navigator.push( // context, // MaterialPageRoute( // builder: // (context) => OrderslistbyModes( // pageTitleName: // provider // .ordersgain[jndex] // .filter! // .pageName!, // mode: // provider.ordersgain[jndex].filter!.mode, // filter: provider.ordersgain[jndex].filter!, // ), // ), // ); } } }, child: Container( padding: EdgeInsets.symmetric(horizontal: 13), decoration: BoxDecoration( color: Color(colors[jndex]), borderRadius: BorderRadius.circular(12), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( provider.ordersgain[jndex].count!, style: TextStyle( fontSize: 30, fontFamily: "JakartaMedium", color: Color(textcolors[jndex]), ), ), Text( leadTitles[jndex], style: TextStyle(color: Color(0xFF818181)), ), ], ), ), ); }, ), ), ], ListView.builder( itemCount: pages.length, shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemBuilder: (context, index) { Widget? SvgIcon; switch (pages[index].mode) { case "level_one_approval": SvgIcon = SvgPicture.asset("assets/svg/fin_lv1.svg"); break; case "level_two_approval": case "level_two_rejected": SvgIcon = SvgPicture.asset("assets/svg/fin_lv2.svg"); break; default: SvgIcon = SvgPicture.asset("assets/svg/fin_ic.svg"); break; } ; return InkResponse( onTap: () async { var navigate; if (pages[index].pageName!.contains("Add Order")) { navigate = AddorderScreen( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } if (pages[index].pageName!.contains("Add Payment")) { ("navigate to Add Payment"); navigate = AddpaymentScreen( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } else if (pages[index].pageName!.contains( "Payments List", )) { navigate = Paymentlistsbymode( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } else if (pages[index].pageName!.contains( "Order List", )) { navigate = OrderslistbyModes( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } else if (pages[index].pageName == "Add TPC Agent") { navigate = AddtpcagentScreen(); } else if (pages[index].pageName == "TPC Agent List (Admin)") { navigate = Tpcagentlistbymode( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } else if (pages[index].pageName == "Pending TPC Issue List") { navigate = Tpcagentissuelist( mode: pages[index].mode!, pageTitleName: pages[index].pageName!, ); } if (navigate != null) { await Navigator.push( context, MaterialPageRoute(builder: (context) => navigate), ); } }, child: Container( margin: EdgeInsets.symmetric( horizontal: 5, vertical: 5, ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 15, ), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), child: Row( children: [ Expanded(flex: 1, child: SvgIcon), Expanded( flex: 5, child: Text("${pages[index].pageName}"), ), Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/arrow_right_new.svg", ), ), ], ), ), ); }, ), ], ), ), ), ); }, ); } }