Skip to content

Commit

Permalink
added login page
Browse files Browse the repository at this point in the history
  • Loading branch information
pm020202pm committed Jul 15, 2023
1 parent ae4619f commit 5b0671a
Show file tree
Hide file tree
Showing 11 changed files with 404 additions and 240 deletions.
14 changes: 5 additions & 9 deletions lib/accepted_tab.dart
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:transport/user.dart';
import 'package:transport/user_card.dart';
import 'fetch_firestore_data.dart';

class AcceptedTab extends StatefulWidget {
final List<User> users;
AcceptedTab({required this.users});
const AcceptedTab({super.key});
@override
_AcceptedTabState createState() => _AcceptedTabState();
}

class _AcceptedTabState extends State<AcceptedTab> {
// List<User> acceptedUsers = [];

Future<List<QueryDocumentSnapshot>> fetchFirestoreDocuments() async {
QuerySnapshot querySnapshot = await firestore.collection('Accepted').get();
QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection('Accepted').get();
List<QueryDocumentSnapshot> documents = querySnapshot.docs;
return documents;
}
Expand All @@ -28,7 +23,7 @@ class _AcceptedTabState extends State<AcceptedTab> {

Future<void> _refreshAcceptedUsers() async {
await Future.delayed(
const Duration(seconds: 1)); // Simulating a delay for refreshing data
const Duration(seconds: 1));
acceptUsers();
}

Expand Down Expand Up @@ -61,6 +56,7 @@ class _AcceptedTabState extends State<AcceptedTab> {
}
}
}

@override
Widget build(BuildContext context) {
return RefreshIndicator(
Expand All @@ -69,7 +65,7 @@ class _AcceptedTabState extends State<AcceptedTab> {
future: fetchFirestoreDocuments(),
builder: (BuildContext context,
AsyncSnapshot<List<QueryDocumentSnapshot>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); }
if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading..."); }
if (snapshot.hasError) {return Text('Error: ${snapshot.error}');}
List<QueryDocumentSnapshot> documents = snapshot.data!;

Expand Down
55 changes: 0 additions & 55 deletions lib/add_user.dart

This file was deleted.

63 changes: 57 additions & 6 deletions lib/catalogue_tab.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,63 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:transport/fetch_firestore_data.dart';
import 'package:transport/user.dart';
import 'package:transport/user_card.dart';
import 'constants.dart';
import 'my_request.dart';

class CatalogueTab extends StatelessWidget {
final List<User> users;
CatalogueTab({required this.users});
class CatalogueTab extends StatefulWidget {
const CatalogueTab({super.key});
@override
State<CatalogueTab> createState() => _CatalogueTabState();
}

class _CatalogueTabState extends State<CatalogueTab> {
@override
Widget build(BuildContext context) {
return MyWidget();
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 0, 0),
child: Text('My Request', style: TextStyle(), textAlign: TextAlign.left,),
),
Container(
child: MyCard(),
),
],
),
const SizedBox(height: 20,),
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 0, 0),
child: Text('Others Request'),
),
Expanded(
child: FutureBuilder<List<QueryDocumentSnapshot>>(
future: fetchFirestoreDocuments(),
builder: (BuildContext context,
AsyncSnapshot<List<QueryDocumentSnapshot>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) { return const Text('Loading...'); }
if (snapshot.hasError) {return Text('Error: ${snapshot.error}');}
List<QueryDocumentSnapshot> documents = snapshot.data!;

return ListView.builder(
itemCount: documents.length,
itemBuilder: (BuildContext context, int index) {
var name = documents[index].get('Name');
var time = documents[index].get('Time');
var isMatched = documents[index].get('isMatched');
return UserCard(color: isMatched? Colors.green : null, name: name, time: time, isMatched: false);
},
);
},
),
),
],
),
);;
}
}
34 changes: 34 additions & 0 deletions lib/constants.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:cloud_firestore/cloud_firestore.dart';

late String userUid;
bool myList=false;
Future<bool> duplicates() async {
QuerySnapshot querySnapshot = await FirebaseFirestore.instance
.collection('Users')
.where("Uid", isEqualTo: userUid)
.get();
if (querySnapshot.docs.isNotEmpty) {
return true;
}
else {
return false;
}
}

Future<List<QueryDocumentSnapshot>> fetchFirestoreDocuments() async {
QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection('Users').get();
// Access the documents in the query snapshot
List<QueryDocumentSnapshot> documents = querySnapshot.docs;
return documents;
}

void deleteContact(String documentId) {
FirebaseFirestore.instance.collection('Users').doc(documentId).delete()
.then((value) {
print('Contact deleted successfully.');
})
.catchError((error) {
print('Failed to delete contact: $error');
});
}

43 changes: 0 additions & 43 deletions lib/fetch_firestore_data.dart

This file was deleted.

78 changes: 5 additions & 73 deletions lib/home_page.dart
Original file line number Diff line number Diff line change
@@ -1,78 +1,14 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:transport/user.dart';
import 'accepted_tab.dart';
import 'catalogue_tab.dart';

class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
final TextEditingController _nameController = TextEditingController();
final TextEditingController _timeController = TextEditingController();
List<User> users = [];

Future<bool> duplicates () async {
String itemName = _nameController.text;
QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection('Users').where("Name", isEqualTo: itemName).get();
if (querySnapshot.docs.isNotEmpty) {
return true;
} else {
return false;
}
}

void newUser() {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Enter details'),
content: Column(
children: [
TextField(
controller: _nameController,
decoration: const InputDecoration(
labelText: 'Name',
),
),TextField(
controller: _timeController,
decoration: const InputDecoration(
labelText: 'Time',
),
),
],
),
actions: [
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
TextButton(
child: const Text('Submit'),
onPressed: () async {
if(await duplicates()==false){
await FirebaseFirestore.instance.collection('Users').add({
'Name': _nameController.text,
'Time': int.parse(_timeController.text),
'isMatched': false,
}).then((value) => print("User added")).catchError((error) => print("Failed to add user: $error"));
Navigator.pop(context);
}
_nameController.clear();
_timeController.clear();
},
),
],
);
},
);
}

@override
Widget build(BuildContext context) {
return DefaultTabController(
Expand All @@ -87,17 +23,13 @@ class _MyHomePageState extends State<MyHomePage> {
],
),
),
body: TabBarView(
body: const TabBarView(
children: [
CatalogueTab(users: users),
AcceptedTab(users: users),
CatalogueTab(),
AcceptedTab(),
],
),
floatingActionButton: FloatingActionButton(
onPressed: newUser,
child: const Icon(Icons.add),
),
),
);
}
}
}
Loading

0 comments on commit 5b0671a

Please sign in to comment.