import 'package:flutter/material.dart'; import 'package:flutter_passvault/api_provider/add_credentail_provider.dart'; import 'package:flutter_passvault/api_provider/connectivty_provider.dart'; import 'package:flutter_passvault/api_provider/my_credential_provider.dart'; import 'package:flutter_passvault/constant/constantfile.dart'; import 'package:flutter_passvault/hive_storage/hive_repositary.dart'; import 'package:flutter_passvault/hive_storage/store_credential_model.dart'; import 'package:flutter_passvault/view_pages/alertbox.dart'; import 'package:flutter_passvault/custom_widgets/new_reuse_textfield.dart'; import 'package:flutter_passvault/custom_widgets/reuse_textview.dart'; import 'package:flutter_passvault/custom_widgets/reuse_button.dart'; import 'package:flutter_passvault/view_pages/shared_preferance.dart'; import 'package:hive/hive.dart'; import 'package:provider/provider.dart'; import '../main.dart'; class AddCredentials extends StatefulWidget { const AddCredentials({super.key}); @override State createState() => _AddCredentialsState(); } class _AddCredentialsState extends State { Color color1 = ApiConstants.backgroundcolor; String fontfamily = ApiConstants.fontFamily; TextEditingController applicationnaecontroller = TextEditingController(); TextEditingController usrnamecontroller = TextEditingController(); TextEditingController pwdcontroller = TextEditingController(); TextEditingController commentcontroller = TextEditingController(); String? usename; String? customValue = ''; String? storeduserid; var isLoading = false; int? autoIncrementKey; @override void initState() { super.initState(); getKey(); } Future getKey() async { String? value = await CustomSharedPreferences.getCustomValue(); String? storeuserid = await CustomSharedPreferences.getuserid(); setState(() { customValue = value ?? ''; storeduserid = storeuserid; print("customKey_value_is: $customValue"); }); } @override Widget build(BuildContext context) { print("User_idddd_is: $storeduserid"); return Consumer( builder: (context, provider, _) => Scaffold( appBar: AppBar( backgroundColor: color1, title: const Text( 'Add Credentials', style: TextStyle(color: Colors.white), ), iconTheme: const IconThemeData(color: Colors.white), ), body: SafeArea( child: Stack( children: [ SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Center( child: Padding( padding: const EdgeInsets.only(top: 30.0, bottom: 30.0), child: ReusableTextView( text: 'Please fill the details', // ignore: prefer_const_constructors textStyle: TextStyle( fontFamily: fontfamily, color: Colors.black, fontSize: 20, ), ), ), ), Padding( padding: const EdgeInsets.only( left: 15.0, right: 15.0, top: 0.0, bottom: 40.0), child: Container( decoration: const BoxDecoration( border: Border( bottom: BorderSide( color: Colors.black, width: 1.5, // Set the desired border width ), ), ), child: NewReusableTextField( // hintText: 'Application name', labelText: "Application Name *", hasBorder: false, controller: applicationnaecontroller, ), ), ), Padding( padding: const EdgeInsets.only( left: 15.0, right: 15.0, top: 0.8, bottom: 40.0), child: Container( decoration: const BoxDecoration( border: Border( bottom: BorderSide( color: Colors.black, width: 1.5, // Set the desired border width ), ), // Set the desired border radius ), child: NewReusableTextField( emailkeyboard: true, hasBorder: false, labelText: 'Username *', controller: usrnamecontroller, ), ), ), Padding( padding: const EdgeInsets.only( left: 15.0, right: 15.0, top: 0.8, bottom: 40.0), child: Container( decoration: const BoxDecoration( border: Border( bottom: BorderSide( color: Colors.black, width: 1.5, // Set the desired border width ), ), // Set the desired border radius ), child: NewReusableTextField( secure: true, labelText: 'Password *', // labelText: "Password", hasBorder: false, controller: pwdcontroller, ), ), ), Padding( padding: const EdgeInsets.only( left: 15.0, right: 15.0, top: 0.8, bottom: 40.0), child: Container( height: 100, decoration: BoxDecoration( border: Border.all( color: const Color(0xff000000), width: 1, ), borderRadius: BorderRadius.circular(10.0)), child: NewReusableTextField( hasBorder: false, labelText: 'Description (Optional)', controller: commentcontroller, ), ), //), ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Padding( padding: const EdgeInsets.only(top: 20.0, bottom: 0.0), child: ReusableButton( text: 'CANCEL', color: Colors.grey, isRounded: true, onPressed: () { print("submit_pressed::"); Navigator.pop(context, true); }, ), ), Padding( padding: const EdgeInsets.only(top: 20.0, bottom: 0.0), child: ReusableButton( text: 'SAVE', color: const Color.fromARGB(255, 39, 121, 42), isRounded: true, onPressed: _submitCredentialsdata, ), ), ], ), ], ), ), Visibility( visible: isLoading, child: const Center( child: CircularProgressIndicator(), )) ], ), // }) ), ), ); } showAlertBox(String msg) { timerrfun(); showDialog( context: context, builder: (BuildContext context) => CustomAlertBox(message: msg)); } void fecthDetails1() async { final internetprovider = Provider.of(context, listen: false); if (internetprovider.isConnected) { Provider.of(context, listen: false) .fetchMyCredential(); } else { showAlertBox("No Internet Connectivity"); } } Future _submitCredentialsdata() async { if (timer != null) timer?.cancel(); print("submit_pressed::"); final applicationName = applicationnaecontroller.text; final userName = usrnamecontroller.text; final password = pwdcontroller.text; if (applicationName.isEmpty || userName.isEmpty || password.isEmpty) { showAlertBox("Please fill the fields."); } else { setState(() { isLoading = true; }); autoIncrementKey = await getNextAutoIncrementValue(); print("autoIncrementKey_iss: $autoIncrementKey"); saveDataOffline(); } } void saveDataOffline() async { final data = Storedcredential( id: autoIncrementKey!, name: applicationnaecontroller.text, username: usrnamecontroller.text, password: pwdcontroller.text, detail: commentcontroller.text, createdBy: int.parse(storeduserid!), modifiedBy: int.parse(storeduserid!), createdAt: DateTime.now(), updatedAt: DateTime.now(), isOfflinecreated: true, isOfflineupdate: false, isOfflinedelete: false, isOfflineshare: false, issync: false, uid: 0, sharedUserIds: [], DeletedUserIds: []); print("added_dataaa: $data"); Provider.of(context, listen: false) .addOfflineData(data); setState(() { isLoading = true; }); usrnamecontroller.clear(); pwdcontroller.clear(); applicationnaecontroller.clear(); commentcontroller.clear(); showAlertBox("Credential Added Successfully"); setState(() { isLoading = false; }); } @override void dispose() { super.dispose(); usrnamecontroller.dispose(); pwdcontroller.dispose(); applicationnaecontroller.dispose(); commentcontroller.dispose(); } Future getNextAutoIncrementValue() async { var counterBox = await Hive.openBox('counterBox'); if (!counterBox.containsKey('counter')) { counterBox.put('counter', 0); } int? counter = counterBox.get('counter'); counterBox.put('counter', counter! + 1); await counterBox.close(); return counter; } }