import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:job_app/config/palette.dart'; import 'package:job_app/singletons/country.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; class CityDropDrown extends StatefulWidget { final bool isCityValid; final changeCity; final int countryIndex; CityDropDrown({Key key,this.isCityValid,this.changeCity,this.countryIndex}) : super(key: key); @override _CityDropDrownState createState() => _CityDropDrownState(); } class _CityDropDrownState extends State { String hintText='City'; @override Widget build(BuildContext context) { return Container( width: 135, height: 40, padding: EdgeInsets.only(left: 5), decoration: BoxDecoration( color: Palette.backgroundColor, borderRadius: BorderRadius.circular(5), border: Border.all( color: (!this.widget.isCityValid) ? Colors.red : Colors.transparent)), child: PopupMenuButton( offset: Offset(35,35), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( child: Text("$hintText",style: TextStyle( fontSize: 14, color: Palette.hintText ),), ), Icon(Icons.keyboard_arrow_down_rounded,color: Palette.hintText,size: 18,) ], ), ), itemBuilder: (context)=>[ PopupMenuItem( enabled: false, child: Container( width: 120, height: 110, child: ChangeNotifierProvider.value( value: CountrySingleTons(), child: Consumer( builder: (context,data,child){ return data.countries.isNotEmpty?ListView.builder( itemCount: data.countries.length, shrinkWrap: true, physics: BouncingScrollPhysics(), itemBuilder: (context,index)=>Padding( padding: const EdgeInsets.all(8.0), child: GestureDetector( onTap: (){ setState(() { hintText=data.countries[index].name.toString(); }); this.widget.changeCity(hintText); Navigator.pop(context); }, child: Text(data.countries[index].capital,style: TextStyle( color: Palette.hintText, fontSize: 16 ),), ), ), ): Text("Loading"); }, ), ), ), ), ], ), ); } }