import 'package:dropdowonsample/contacts.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
 runApp(
  MultiProvider(
   providers: [
    ChangeNotifierProvider.value(
     value: ContactService(),
    ),
   ],
   child: MyApp(),
  ),
 );
}
class MyApp extends StatelessWidget {
 // This widget is the root of your application.
 @override
 Widget build(BuildContext context) {
  return MaterialApp(
   title: 'Flutter Demo',
   theme: ThemeData(
    primarySwatch: Colors.blue,
    visualDensity: VisualDensity.adaptivePlatformDensity,
   ),
   home: MyHomePage(title: 'Flutter Demo Home Page'),
  );
 }
}
class MyHomePage extends StatefulWidget {
 MyHomePage({Key key, this.title}) : super(key: key);
 final String title;
 @override
 _MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
 List<Contacts> finalList = [];
 final _controllerStartDate  = TextEditingController();
 @override
 void dispose() {
  finalList.clear();
 }
 Widget _createDropDownButton(List<Contacts> _cont, BuildContext context) {
  return Consumer<ContactService>(builder: (ctx, d, ch) {
   return DropdownButton(
    key: GlobalKey(),
    value: d.getSelectedValue(), // _selectedValue,
    items: _cont
      .map(
       (e) => DropdownMenuItem(
        value: e.id,
        child: Text(e.name),
        onTap: () {},
       ),
      )
      .toList(),
    onChanged: (value) {
     Provider.of<ContactService>(context, listen: false)
       .setIsSelected(value);
    },
   );
  });
 }
 @override
 Widget build(BuildContext context) {
  return Scaffold(
   appBar: AppBar(
    title: Text(widget.title),
   ),
   body: Center(
    child: Column(
     mainAxisAlignment: MainAxisAlignment.center,
     children: <Widget>[
      Text(
       'You have pushed the button this many times:',
      ),
      Consumer<ContactService>(
       builder: (ctx, d, ch) {
        return Text(
         d.getSelectedValue() == null ? "hello" : d.getSelectedValue(),
         style: Theme.of(context).textTheme.headline4,
        );
       },
      ),
      FutureBuilder(
       future: Provider.of<ContactService>(context, listen: false)
         .getPlans(),
       builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
         return _createDropDownButton(snapshot.data,
           context); // Text(snapshot.data.length.toString());
        } else {
         return Text("Waiting");
        }
       },
      ),
      TextFormField(
       key: GlobalKey(),
       controller: _controllerStartDate,
       decoration: InputDecoration(
        labelText: "Enter Start Date :",
       ),
       onTap: () async {
        DateTime date = DateTime(1900);
        FocusScope.of(context).requestFocus(new FocusNode());
        date = await showDatePicker(
          context: context,
          initialDate: DateTime.now(),
          firstDate: DateTime(1900),
          lastDate: DateTime(2100));
        _controllerStartDate.text = date.toIso8601String();
       },
      ),
     ],
    ),
   ),
  );
 }
}