import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dotted_line/dotted_line.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:generp/Notifiers/crmProvider/crmDashboardProvider.dart'; import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/commonServices.dart'; import 'package:generp/Utils/commonWidgets.dart'; import 'package:generp/screens/crm/pendingTasksDetails.dart'; import 'package:provider/provider.dart'; import 'LeadDetailsByMode.dart'; class Generatedquoteslist extends StatefulWidget { const Generatedquoteslist({super.key}); @override State createState() => _GeneratedquoteslistState(); } class _GeneratedquoteslistState extends State { FocusNode focusNode = FocusNode(); Map _source = {ConnectivityResult.mobile: true}; final MyConnectivity _connectivity = MyConnectivity.instance; @override void initState() { super.initState(); _connectivity.initialise(); _connectivity.myStream.listen((event) { setState(() => _source = event); }); WidgetsBinding.instance.addPostFrameCallback((timeStamp) { var prov = Provider.of(context, listen: false); prov.crmDashboardQuotationsAPIFunction(context); }); } @override void dispose() { // TODO: implement dispose super.dispose(); _connectivity.disposeStream(); } getDecorationColor(value){ switch (value){ case "Hot": return AppColors.processed_bg_color; case "Warm": return AppColors.rejected_bg_color; case "Cold": return AppColors.approved_bg_color; case "All": return AppColors.requested_bg_color; } } getTextColor(value){ switch (value){ case "Hot": return AppColors.processed_text_color; case "Warm": return AppColors.rejected_text_color; case "Cold": return AppColors.approved_text_color; case "All": return AppColors.requested_text_color; } } @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) { var quotess = provider.dashboardQuotations; return Scaffold( resizeToAvoidBottomInset: true, backgroundColor: AppColors.scaffold_bg_color, appBar: AppBar( automaticallyImplyLeading: false, // elevation: 2.0, title: SizedBox( child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ InkResponse( onTap: () => Navigator.pop(context, true), child: SvgPicture.asset( "assets/svg/appbar_back_button.svg", height: 25, ), ), SizedBox(width: 10), InkResponse( onTap: () => Navigator.pop(context, true), child: Text( "Quotations Generated", style: TextStyle( fontSize: 16, height: 1.1, fontFamily: "JakartaSemiBold", color: AppColors.semi_black, ), ), ), ], ), ), ), body: (quotess.isNotEmpty) ? SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), child: Column( children: [ Container( width: double.infinity, child: ListView.builder( physics: NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsets.symmetric( vertical: 5, horizontal: 10, ), itemCount: quotess.length, itemBuilder: (context, index) { return InkResponse( onTap: () async { Navigator.push( context, MaterialPageRoute( builder: (context) => LeadDetailsByMode( pageTitleName: "Lead Details", mode: "", leadId: quotess[index].leadid, ), ), ); }, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(15), ), margin: EdgeInsets.symmetric(vertical: 3), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 10, ), child: Row( children: [ SvgPicture.asset("assets/svg/finance/fin_payments_ic.svg",), SizedBox(width: 10,), Expanded( flex: 4, child: Text( "${quotess[index].aname}", maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle( decoration: TextDecoration.underline, height: 1.5, decorationStyle: TextDecorationStyle.dotted, decorationColor: Color(0xFF676767), color: AppColors.semi_black, fontFamily: "JakartaRegular", fontSize: 14, ), ), ), SizedBox(width: 10,), Expanded( flex: 2, child: Container( padding: EdgeInsets.symmetric(vertical: 5), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), color: getDecorationColor(quotess[index].lstatus) ), child: Text( "${quotess[index].lstatus}", textAlign: TextAlign.center, maxLines: 1, style: TextStyle( color: getTextColor(quotess[index].lstatus), fontFamily: "JakartaRegular", fontSize: 14, ), ), ), ), ], ), ), ); }, ), ), SizedBox(height: 150), ], ), ) : Emptywidget(context), ); }, ); } }