Asset-Borrowing-App / lib / Project / Borrow History / pending.dart
pending.dart
Raw
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/container.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import '../utils/colors.dart';

class Pending extends StatefulWidget {
  const Pending({super.key});

  @override
  State<Pending> createState() => _PendingState();
}

class _PendingState extends State<Pending> {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            // Wrap with Expanded
            child: StreamBuilder<QuerySnapshot>(
              stream:
                  FirebaseFirestore.instance.collection("request").snapshots(),
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  final docs = snapshot.data!.docs;
                  return ListView.builder(
                    scrollDirection: Axis.vertical,
                    itemCount: docs.length,
                    itemBuilder: (context, index) {
                      final document = docs[index];
                      String c = _auth.currentUser!.email.toString();
                      String ch = 'Check';
                      if (c == document["EmailUserreq"] &&
                          document["Status"] == ch) {
                        return ListTile(
                          leading: const Icon(FontAwesomeIcons.solidHourglassHalf),
                          title: Text(document["Name"]),
                          subtitle: Column(
                            children: [
                              Row(
                                children: const [
                                  Text('Status: Wait Approve'),
                                ],
                              ),
                              Row(
                                children: [Text(document["Timerequest"])],
                              )
                            ],
                          ),
                          trailing: TextButton(
                            onPressed: () => showDialog<String>(
                              context: context,
                              builder: (BuildContext context) => AlertDialog(
                                shape: const RoundedRectangleBorder(
                                    borderRadius: BorderRadius.all(
                                        Radius.circular(10.0))),
                                title: Text(
                                  document["Name"],
                                  style: Theme.of(context)
                                      .textTheme
                                      .headlineSmall!
                                      .copyWith(fontWeight: FontWeight.bold),
                                ),
                                content: Builder(builder: (context) {
                                  return SizedBox(
                                    height: 90,
                                    width: 70,
                                    child: Column(
                                      children: [
                                        Row(
                                          children: const [
                                            Spacer(),
                                            Text(
                                              'Are you sure\nto cancel this request?',
                                              style: TextStyle(
                                                  fontWeight: FontWeight.w900,color: Colors.red),
                                            ),
                                            Spacer(),
                                          ],
                                        ),
                                        const SizedBox(
                                          height: 10,
                                        ),
                                        Row(
                                          children: [
                                            const Spacer(),
                                            const Text('Borrowing Day : '),
                                            Text(document["BorrowingDay"]),
                                            const Spacer(),
                                          ],
                                        ),
                                        Row(
                                          children: [
                                            const Spacer(),
                                            const Text('Give back Day : '),
                                            Text(document["ReturnDay"]),
                                            const Spacer(),
                                          ],
                                        ),
                                      ],
                                    ),
                                  );
                                }),
                                actions: <Widget>[
                                  TextButton(
                                    onPressed: () =>
                                        Navigator.pop(context, 'Cancel'),
                                    child: const Text('Cancel'),
                                  ),
                                  TextButton(
                                    onPressed: () {
                                      deleteData(document.id);
                                      Navigator.pop(context, 'Confirm');
                                    },
                                    child: const Text('Confirm',style: TextStyle(color: Colors.red),),
                                  ),
                                ],
                              ),
                            ),
                            style: ElevatedButton.styleFrom(
                              foregroundColor: Colors.white,
                              backgroundColor: kRedColor,
                            ),
                            child: const Text(
                              'Cancel',
                            ),
                          ),
                        );
                      }
                      return const SizedBox.shrink();
                    },
                  );
                } else if (snapshot.hasError) {
                  return Text('Error: ${snapshot.error}');
                } else {
                  return const CircularProgressIndicator();
                }
              },
            ),
          ),
        ],
      ),
    );
  }
  Future<void> deleteData(String docId) async {
    FirebaseFirestore.instance.collection('request').doc(docId).delete().then(
          (value) => print('Updating done!'),
          onError: (e) => print('Error $e'),
        );
  }
}