import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:healthcare_delivery/common/login.dart';
import 'package:healthcare_delivery/common/settings.dart';
import 'dart:io';

import 'package:image_picker/image_picker.dart';





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

  @override
  State<Dashboard> createState() => _DashboardState();
}

class _DashboardState extends State<Dashboard> {
  int _selectedIndex = 0;

  TextEditingController tankNameController = TextEditingController();
  TextEditingController blockNameController = TextEditingController();
  TextEditingController capacityController = TextEditingController();


  static const TextStyle optionStyle =
  TextStyle(fontSize: 30, fontWeight: FontWeight.bold);


  final ImagePicker _picker = ImagePicker();

  Future pickImageFromGallery() async {
    try {
        final image = await _picker.pickImage(source: ImageSource.gallery);
        if (image == null) return;
        final imageTemp = File(image.path);
      setState(() {
        AppSettings.updatedImage = imageTemp;
      });
     // uploadProfileApi(AppSettings.updatedImage);
      AppSettings.saveProfile(image.path);


    } on PlatformException catch (e) {
      print('Failed to pick image: $e');
    }
  }

  Future takeImageFromCamera() async {
    try {
      final image = await _picker.pickImage(source: ImageSource.camera);
      if (image == null) return;
      final imageTemp = File(image.path);
      setState(() {
        AppSettings.updatedImage = imageTemp;
      });

      //uploadProfileApi(AppSettings.updatedImage);
      AppSettings.saveProfile(image.path);

    } on PlatformException catch (e) {
      print('Failed to pick image: $e');
    }
  }

  Widget _dashBoard() {

    return Container(
      color: primaryColor,
      child: Column(
        children: <Widget>[
          Container(
              height: MediaQuery.of(context).size.height * .250,
              width: double.infinity,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(0),
              ),
              //color: Colors.red,
              child: FittedBox(
                child:Image(
                  image: const AssetImage('images/mobilebg.png'),

                ),
                fit: BoxFit.fill,
              )
          ),
          SizedBox(
              height: 5
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Expanded(
                  child: GestureDetector(
                    onTap: () {
                         /*Navigator.push(
                        context,
                        MaterialPageRoute(builder: (context) => DelivryBookingData()),
                      );*/
                    },
                    child: Container(
                      padding: EdgeInsets.all(05),
                      margin: EdgeInsets.only(left:15, top:15, right: 15, bottom:15),
                      //height: MediaQuery.of(context).size.height * .05,
                      //width: MediaQuery.of(context).size.width * .45,
                      decoration: BoxDecoration(
                        color: Colors.white,
                        borderRadius: BorderRadius.circular(12),
                      ),
                      // Change button text when light changes state.

                      child: Column(
                        children:  [
                          Container(
                              child: Image(image: AssetImage(
                                  "images/seekopinion.png"),
                              ),
                          ),
                          Text('Booking Data',style: dashboardTextStyle(),),

                        ],
                      ),
                    ),
                  )),

            ],
          ),

          //==============================list2

        ],
      ),
    );
  }




  showLogoutAlertDialog(context){
    return showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return StatefulBuilder(
              builder: (BuildContext context, StateSetter setState) {
                return AlertDialog(
                    title: const Text('Do you really want to logout?'),
                    actions: <Widget>[
                      TextButton(
                        child:  Text('No',style:textButtonStyle()),
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                      ),
                      TextButton(
                        child:  Text('Yes',style:textButtonStyle()),
                        onPressed: () async{
                          await AppSettings.clearSharedPreferences();
                          await Navigator.pushAndRemoveUntil(context,  MaterialPageRoute(builder: (context) => Login()),(Route<dynamic> route) => false,);

                        },
                      ),
                    ]

                );
              });
        }
    );
  }



  @override
  Widget build(BuildContext context) {

    return WillPopScope(
      onWillPop: () async {
        if(_selectedIndex==0){
          final shouldPop = await showDialog<bool>(context: context, builder: (context) {
            return AlertDialog(
              title: const Text('Do you want to exit app?',
                  style: TextStyle(
                    color: primaryColor,
                    fontSize: 20,
                  )),
              actionsAlignment: MainAxisAlignment.spaceBetween,
              actions: [
                TextButton(
                  onPressed: () {
                    SystemNavigator.pop();
                  },
                  child: const Text('Yes',
                      style: TextStyle(
                        color: primaryColor,
                        fontSize: 20,
                      )),
                ),
                TextButton(
                  onPressed: () {
                    Navigator.of(context).pop(false);
                  },
                  child: const Text('No',
                      style: TextStyle(
                        color: primaryColor,
                        fontSize: 20,
                      )),
                ),
              ],
            );
          },
          );
          return shouldPop!;
        }
        else{
          setState(() {
            _selectedIndex=0;
          });
          return false;
        }

      },
      child: Scaffold(
        resizeToAvoidBottomInset: false,
        appBar:AppSettings.appBar('Arminta Water Management'),
        drawer: Drawer(
          // Add a ListView to the drawer. This ensures the user can scroll
          // through the options in the drawer if there isn't enough vertical
          // space to fit everything.
          backgroundColor: screenBackgroundColor,
          child: ListView(
            // Important: Remove any padding from the ListView.
            padding: EdgeInsets.zero,
            children: [
              DrawerHeader(
                  decoration: const BoxDecoration(
                    color: primaryColor,
                  ),
                  child: Row(
                    children: [
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [


                         Expanded(child:  GestureDetector(
                           child: Container(
                             width: MediaQuery.of(context).size.width * .20,
                             height: MediaQuery.of(context).size.height * .15,
                             decoration: BoxDecoration(
                                 shape: BoxShape.circle,
                                 image: DecorationImage(
                                     image: (AppSettings.updatedImage != null) ? FileImage(AppSettings.updatedImage!) as ImageProvider : AssetImage("images/profile_pic.png"), // picked file
                                     fit: BoxFit.cover)),
                           ),
                           onTap: () {
                             showModalBottomSheet<void>(
                                 context: context,
                                 builder: (BuildContext context) {
                                   return SizedBox(
                                     height: 200,
                                     child: Center(
                                       child: Row(
                                         mainAxisAlignment: MainAxisAlignment.center,
                                         children: <Widget>[
                                           GestureDetector(
                                             child: Icon(
                                               Icons.camera_alt_outlined,
                                               size: 100,
                                               color: greyColor,
                                             ),
                                             onTap: () async {
                                               await takeImageFromCamera();
                                               Navigator.pop(context);
                                             },
                                           ),
                                           SizedBox(
                                             width:
                                             MediaQuery.of(context).size.width * .20,
                                           ),
                                           GestureDetector(
                                             child: Icon(
                                               Icons.photo,
                                               size: 100,
                                               color: greyColor,
                                             ),
                                             onTap: () async {
                                               await pickImageFromGallery();
                                               Navigator.pop(context);
                                             },
                                           ),
                                         ],
                                       ),
                                     ),
                                   );
                                 });
                           },
                         ),),

                          Text(
                            AppSettings.deliveryBoyname,
                            style: TextStyle(color: Colors.white, fontSize: 15),
                          ),
                          Text(
                            AppSettings.phoneNumber,
                            style: TextStyle(color: Colors.white, fontSize: 15),
                          ),
                       /*   Text(
                            AppSettings.email,
                            style: TextStyle(color: Colors.white, fontSize: 15),
                          ),*/
                        ],
                      ),
                      Container()
                    ],
                  )),
              // Add Tanks
              ListTile(
                title: Row(
                  children: const [
                    Image(image: const AssetImage('images/connectionsblue.png'),height: 25,width: 25,fit: BoxFit.fill),
                    const SizedBox(
                      width: 10,
                    ),
                    Text('Booking Data',style: TextStyle(color:primaryColor)),
                  ],
                ),
                onTap: () {
                  /*Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => DelivryBookingData()),
                  );*/
                },
              ),
              Divider(
                color: Colors.grey,
              ),
              ListTile(
                title: Row(
                  children: const [
                    Image(image: const AssetImage('images/customercareblue.png'),height: 25,width: 25,fit: BoxFit.fill),
                    const SizedBox(
                      width: 10,
                    ),
                    Text('Customer Support', style: TextStyle(color:primaryColor)),
                  ],
                ),
                onTap: () {},
              ),
              Divider(
                color: Colors.grey,
              ),
              ListTile(
                title: Row(
                  children: const [
                    Image(image: const AssetImage('images/logoutblue.png'),height: 25,width: 25,fit: BoxFit.fill),
                    const SizedBox(
                      width: 10,
                    ),
                    Text('Logout', style: TextStyle(color:primaryColor)),
                  ],
                ),
                onTap: () async{


                  showLogoutAlertDialog(context);


                },
              ),
            ],
          ),
        ),
        body: _dashBoard(),
        /*body: IndexedStack(
          index: _selectedIndex,
          children: screens,
        ),*/
        /* bottomNavigationBar: Container(
          //height: MediaQuery.of(context).size.height,
          child: BottomNavigationBar(
            items: const <BottomNavigationBarItem>[
              BottomNavigationBarItem(
                icon: Icon(
                  Icons.home,
                ),
                label: 'Home',
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.propane_tank),
                label: 'Add Tanks',
              ),
              *//*BottomNavigationBarItem(
                icon: Icon(Icons.private_connectivity_outlined),
                label: 'CreateConnections',
              ),*//*
              BottomNavigationBarItem(
                icon: Icon(Icons.list_alt),
                label: 'Add Tanker',
              ),
            ],
            currentIndex: _selectedIndex,
            selectedItemColor: primaryColor,
            unselectedItemColor: greyColor,
            showUnselectedLabels: true,
            onTap: _onItemTapped,
          ),
        ),*/
      ),
    );
  }
}
