mobileapplicationPassvault/lib/view_pages/shared_data.dart

370 lines
14 KiB
Dart

import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/api_provider/connectivty_provider.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/custom_widgets/reuse_textview.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/shared_preferance.dart';
import 'package:flutter_passvault/view_pages/view_details_screen.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
class SharedCredentials extends StatefulWidget {
const SharedCredentials({super.key});
@override
State<SharedCredentials> createState() => _SharedCredentialsState();
}
class _SharedCredentialsState extends State<SharedCredentials> {
// Color color1 = HexColor("2a47a5");
Color color1 = ApiConstants.backgroundcolor;
Color orangecolor = ApiConstants.orangecolor;
String fontFamily = ApiConstants.fontFamily;
var isLoading = false;
String? username, userid;
bool _switchValue = false;
final TextEditingController _searchController = TextEditingController();
Timer? timer;
//Timer? timer;
@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 30), (timer) {
refreshData();
});
refreshData();
getname();
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
print("didChangeDependencies");
refreshData(); // Fetch data when the widget is inserted into the widget tree
}
@override
Widget build(BuildContext context) {
final connetivity = Provider.of<ConnectivityProvider>(context);
return GestureDetector(
onTap: () {
print('Clicked outside');
FocusScope.of(context).unfocus();
},
child: Scaffold(
backgroundColor: Colors.white,
body: Column(
children: [
Expanded(
child: Consumer<HiveDataRepository>(
builder: (context, storedProvider, _) {
print("connetivity.isConnected: ${connetivity.isConnected}");
List<Storedcredential> storedcredential =
storedProvider.getAllDataFromHive();
print("stored_hivedata_is: ${storedProvider.searchResults}");
// storedcredential
// .sort((a, b) => b.updatedAt.compareTo(a.updatedAt));
storedcredential.sort((a, b) =>
a.name.toLowerCase().compareTo(b.name.toLowerCase()));
List<Storedcredential> filteredCredentials = storedcredential
.where((credential) => credential.name
.toLowerCase()
.contains(_searchController.text.toLowerCase()))
.toList();
return Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment
.center, // Align children to start and end of the row
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 45.0),
child: Text(
_switchValue
? "My Credentials"
: "All Credentials",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.w500,
fontStyle: FontStyle.normal,
fontFamily: fontFamily,
color: _switchValue
? Colors.black
: Colors.black),
),
),
),
// Expanded(
Row(
// Adjust alignment as needed
mainAxisSize: MainAxisSize.min,
children: [
// Text('All'),
// const TextWithHorizontalLine(text: 'All'),
_switchValue
? ReusableTextView(
text: 'All',
textStyle: const TextStyle(
fontSize: 12,
decoration: TextDecoration.lineThrough,
decorationThickness: 0.85,
),
// TODO: implement dispose
)
: ReusableTextView(
text: 'All',
textStyle: const TextStyle(
fontSize: 12,
)),
CupertinoSwitch(
activeColor: orangecolor,
value: _switchValue,
onChanged: (value) {
setState(() {
print("Switch_value_is : $value");
_switchValue = value;
});
},
),
Padding(
padding: const EdgeInsets.only(right: 8.0),
child: !_switchValue
? ReusableTextView(
text: 'My',
textStyle: const TextStyle(
fontSize: 12,
decoration:
TextDecoration.lineThrough,
decorationThickness: 0.85,
),
)
: ReusableTextView(
text: 'My',
textStyle: const TextStyle(
fontSize: 12,
)),
)
],
),
// ),
]),
Padding(
padding: const EdgeInsets.only(
top: 8.0, bottom: 8.0, left: 20.0, right: 20.0),
child: Center(
child: TextField(
controller: _searchController,
onChanged: (value) {
setState(() {
Provider.of<HiveDataRepository>(context,
listen: false)
.searchInHive(
value); // Update the search results
});
},
// ignore: prefer_const_constructors
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(
vertical: 9.0), // Adjust the vertical padding
border: const OutlineInputBorder(),
labelText: ' Search',
prefixIcon: const Icon(Icons.search),
)),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.only(top: 0.0),
child: RefreshIndicator(
onRefresh: refreshData,
child: ListView.builder(
shrinkWrap: true,
itemCount: filteredCredentials.length,
itemBuilder: (context, index) {
final mycrdentialappname =
filteredCredentials[index];
String mydatetimevalue =
mycrdentialappname.updatedAt.toString();
print(
"Listhive_data_is : ${mycrdentialappname.name}, ${mycrdentialappname.updatedAt}");
DateTime dateTime =
DateTime.parse(mydatetimevalue);
String formattedDate =
DateFormat('dd-MM-yyyy HH:mm ')
.format(dateTime);
print("date&Time_is : $formattedDate");
print("stored userid : $userid");
if (!_switchValue) {
return mycrdentialappname.isOfflinedelete
? Container()
: listview(mycrdentialappname, index);
} else {
if (userid ==
mycrdentialappname.createdBy
.toString()) {
// textdata = "My Credential";
return mycrdentialappname.isOfflinedelete
? Container()
: listview(mycrdentialappname, index);
} else {
return Container();
}
}
})),
),
),
],
);
//}
}),
),
],
),
floatingActionButton: FloatingActionButton(
shape: const CircleBorder(),
backgroundColor: const Color(0xFFF96731),
onPressed: () async {
Navigator.of(context, rootNavigator: true)
.pushNamed("/Addcredential");
},
tooltip: 'Add Credential',
child: const Icon(
Icons.add,
color: Colors.white,
),
),
// ),
),
);
}
Future<void> getname() async {
String? username1 = await CustomSharedPreferences.getname();
String? userid1 = await CustomSharedPreferences.getuserid();
setState(() {
username = username1;
userid = userid1;
});
print("value_isss: $username");
}
Future<void> refreshData() async {
// Simulate data loading delay (you can fetch new data here).
await Future.delayed(const Duration(seconds: 0));
setState(() {
fecthDetails1();
});
}
void fecthDetails1() async {
Provider.of<HiveDataRepository>(context, listen: false)
.getAllDataFromHive();
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
timer!.cancel();
}
listview(Storedcredential mycrdentialappname, int index) {
String mydatetimevalue = mycrdentialappname.updatedAt.toString();
DateTime dateTime = DateTime.parse(mydatetimevalue);
DateTime localTime = dateTime.toLocal();
String formattedDate = DateFormat('dd-MM-yyyy HH:mm ').format(localTime);
print("date&Time_is : $formattedDate");
print("nameeee_is : ${mycrdentialappname.name}");
return Card(
elevation: 2,
surfaceTintColor: Colors.white,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(0.0),
),
),
child: GestureDetector(
onTap: () {
print("nameeee_cred_id_is : ${mycrdentialappname.uid}");
print("nameeee_cred_id_is1 : ${mycrdentialappname.id}");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ViewDetilsScreen(
jsondata: mycrdentialappname, index: index),
));
},
child: ListTile(
title: ReusableTextView(
text: mycrdentialappname.name,
// ignore: prefer_const_constructors
textStyle: TextStyle(
fontFamily: fontFamily,
color: userid != mycrdentialappname.createdBy.toString()
? color1
: orangecolor,
fontSize: 18,
),
),
subtitle: ReusableTextView(
text: "Last Updated on $formattedDate ",
// ignore: prefer_const_constructors
textStyle: TextStyle(
fontFamily: fontFamily,
color: Colors.grey.shade600,
fontSize: 12,
fontStyle: FontStyle.italic),
),
trailing: Transform.rotate(
angle: 3.141592, // 180 degrees in radians
child: const Icon(
Icons.arrow_back_ios_new,
color: Colors.black45,
),
),
),
),
);
}
}