import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import '../../Notifiers/ordersProvider/tpcAgentsProvider.dart'; import '../../Utils/app_colors.dart'; import '../../Utils/commonWidgets.dart'; import '../../Utils/dropdownTheme.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:generp/Utils/commonServices.dart'; class AddtpcagentScreen extends StatefulWidget { const AddtpcagentScreen({super.key}); @override State createState() => _AddtpcagentScreenState(); } class _AddtpcagentScreenState extends State { Dropdowntheme ddtheme = Dropdowntheme(); List focusNodes = List.generate(10, (index) => FocusNode()); 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); }); } @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"? Consumer( builder: (context, provider, child) { return WillPopScope( child: SafeArea( top: false, bottom: Platform.isIOS?false:true, child: Scaffold( resizeToAvoidBottomInset: true, appBar: appbar2New( context, "Add TPC Agent", provider.resetAll, SizedBox(width: 0), 0xFFFFFFFF ), backgroundColor: AppColors.scaffold_bg_color, body: Container( child: SingleChildScrollView( child: Column( children: [ Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), ), margin: EdgeInsets.symmetric( vertical: 10, horizontal: 10, ), padding: EdgeInsets.symmetric( vertical: 10, horizontal: 10, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ textControllerWidget( context, provider.tpcNameController, "Name", "Enter Name", provider.onChangetpcName, TextInputType.text, false, null, focusNodes[0], focusNodes[1], TextInputAction.next ), if (provider.tpcNameError != null) ...[ errorWidget(context, provider.tpcNameError), ], textControllerWidget( context, provider.tpcMobileNumberController, "Mobile Number", "Enter Mobile Number", provider.onChangetpcMobileNumber, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, focusNodes[1], focusNodes[2],TextInputAction.next,10 ), if (provider.tpcMobileNumberError != null) ...[ errorWidget(context, provider.tpcMobileNumberError), ], InkResponse( onTap: () { _showAttachmentSheet(context); }, child: Container( margin: EdgeInsets.symmetric(vertical: 10), height: 45, width: MediaQuery.of(context).size.width, decoration: BoxDecoration( color: Color(0xFFE6F6FF), borderRadius: BorderRadius.circular(12), border: Border.all( color: AppColors.app_blue, width: 0.5, ), ), child: Center( child: Text( "ID Proof", style: TextStyle( fontFamily: "JakartaMedium", color: AppColors.app_blue, ), ), ), ), ), if (provider.imagePicked == 1 && provider.imagePath != null) ...[ Padding( padding: const EdgeInsets.symmetric( vertical: 4.0, ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( "${provider.imagePath}", style: TextStyle( color: AppColors.semi_black, fontSize: 11, fontWeight: FontWeight.w600, ), ), InkResponse( onTap: () { provider.imagePicked = 0; provider.imagePath = null; provider.imageFilePath = null; }, child: SvgPicture.asset( "assets/svg/ic_close.svg", width: 15, height: 15, ), ), ], ), ), ], errorWidget(context, provider.imageError), textControllerWidget( context, provider.tpcBankNameController, "Bank Name", "Enter Bank Name", provider.onChangetpcBankName, TextInputType.text, false, null, focusNodes[2],focusNodes[3],TextInputAction.next ), if (provider.tpcBankNameError != null) ...[ errorWidget(context, provider.tpcBankNameError), ], textControllerWidget( context, provider.tpcBankBeneficiaryNameController, "Bank Beneficiary Name", "Enter Bank Beneficiary Name", provider.onChangetpcBankBeneficiaryName, TextInputType.text, false, null, focusNodes[3],focusNodes[4],TextInputAction.next ), if (provider.tpcBankBeneficiaryNameError != null) ...[ errorWidget( context, provider.tpcBankBeneficiaryNameError, ), ], textControllerWidget( context, provider.tpcBankAccountNumberController, "Bank Account Number", "Enter Bank Account Number", provider.onChangetpcBankAccountNumber, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, focusNodes[4],focusNodes[5],TextInputAction.next ), if (provider.tpcBankAccountNumberError != null) ...[ errorWidget( context, provider.tpcBankAccountNumberError, ), ], textControllerWidget( context, provider.tpcBankIFSCController, "Bank IFSC", "Enter Bank IFSC", provider.onChangetpcBankIFSC, TextInputType.text, false, null, focusNodes[5],focusNodes[6], TextInputAction.next ), if (provider.tpcBankIFSCError != null) ...[ errorWidget(context, provider.tpcBankIFSCError), ], textControllerWidget( context, provider.tpcNoteController, "Description", "Enter Description", provider.onChangetpcNote, TextInputType.text, false, null, focusNodes[6],focusNodes[7],TextInputAction.next ), if (provider.tpcNoteError != null) ...[ errorWidget(context, provider.tpcNoteError), ], InkWell( onTap:provider.submitClicked?null: () { provider.submitClicked = true; provider.addTPCAgentAPIFunction(context); }, child: Container( alignment: Alignment.center, height: 45, margin: EdgeInsets.only( left: 5.0, right: 5.0, top: 5.0, bottom: 5.0, ), decoration: BoxDecoration( color: AppColors.app_blue, //1487C9 borderRadius: BorderRadius.circular(14.0), ), child: Center( child:provider.submitClicked?CircularProgressIndicator.adaptive( valueColor: AlwaysStoppedAnimation(Colors.white), ): Text( "Submit", textAlign: TextAlign.center, style: TextStyle(color: Colors.white), ), ), ), ), ], ), ), ], ), ), ), ), ), onWillPop: () { return onBackPressed(context); }, ); }, ):NoNetwork(context); } Future _showAttachmentSheet(BuildContext context) { return showModalBottomSheet( useSafeArea: true, isDismissible: true, isScrollControlled: true, showDragHandle: true, backgroundColor: Colors.white, enableDrag: true, context: context, builder: (context) { return StatefulBuilder( builder: (context, setState) { return SafeArea( child: Consumer( builder: (context, tcpProvider, child) { return Padding( padding: EdgeInsets.only( bottom: MediaQuery.of( context, ).viewInsets.bottom, // This handles keyboard ), child: Container( margin: EdgeInsets.only( bottom: 15, left: 15, right: 15, top: 10, ), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Align( alignment: Alignment.center, child: Text( "Select Source", style: TextStyle( color: AppColors.app_blue, fontSize: 16, ), ), ), SizedBox(height: 15), InkWell( onTap: () { Navigator.of(context).pop(false); tcpProvider.imgFromGallery(context); }, child: Container( height: 35, child: Text("Select photo from gallery"), ), ), SizedBox(height: 10), InkWell( onTap: () { Navigator.of(context).pop(false); tcpProvider.imgFromCamera(context); }, child: Container( height: 35, child: Text("Capture photo from camera"), ), ), ], ), ), ), ); }, ), ); }, ); }, ); } }