import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:job_app/config/palette.dart'; import 'package:job_app/models/APiResponse.dart'; import 'package:job_app/models/CV.dart'; import 'package:job_app/models/CvModel.dart'; import 'package:job_app/services/cv/fonts.dart'; import 'package:job_app/views/apply.dart'; import 'package:job_app/widgets/cv_card.dart'; import 'package:job_app/widgets/loading_screen.dart'; class SelectCV extends StatefulWidget { const SelectCV({Key key}) : super(key: key); @override _SelectCVState createState() => _SelectCVState(); } class _SelectCVState extends State { Map data = {}; List cvList = []; List cvModels =[]; int offerId ; bool isLoading =false; @override Widget build(BuildContext context) { data = ModalRoute.of(context).settings.arguments; cvList = data["cvs"]; cvModels = data["cvModels"]; offerId = data["offerId"]; return Scaffold( backgroundColor: Palette.backgroundColor, body: Stack( children: [ Padding( padding: const EdgeInsets.fromLTRB(30, 40, 30, 0), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ GestureDetector( onTap: () { Navigator.pop(context); }, child: SvgPicture.asset( "assets/icons/arrow_left.svg", color: Colors.black, width: 22, )), SizedBox( width: 10, ), Text( "Select your CV", style: TextStyle( color: Colors.black, fontFamily: 'Montserrat', fontSize: 20), ), ], ), Container( height: 27, width: 70, decoration: BoxDecoration( color: Palette.primary, borderRadius: BorderRadius.circular(4)), padding: EdgeInsets.symmetric(horizontal: 2), child: TextButton( style: ButtonStyle( overlayColor: MaterialStateProperty.resolveWith( (states) => Colors.transparent)), onPressed: () {}, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Icon( Icons.add, color: Colors.white, size: 10, ), Text( "Add CV", style: TextStyle( color: Colors.white, fontSize: 9, fontFamily: 'MontserratMedium'), ), ], )), ), ], ), SizedBox( height: 50, ), TextField( style: TextStyle( fontSize: 16, fontFamily: 'MontserratMedium', ), cursorColor: Palette.primary, decoration: InputDecoration( prefixIcon: Padding( padding: const EdgeInsets.fromLTRB(20, 15, 10, 15), child: Icon(Icons.search), ), hintText: "Search messages", hintStyle: TextStyle( color: Color(0xffB6B6B6), fontSize: 16, fontFamily: 'MontserratRegular', fontWeight: FontWeight.w400), fillColor: Colors.white, filled: true, contentPadding: EdgeInsets.fromLTRB(0, 10, 0, 0), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(4), borderSide: BorderSide(color: Color(0xff707070))), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(4), borderSide: BorderSide(color: Color(0xff707070))), ), ), SizedBox( height: 20, ), Expanded( child: ListView.builder( physics: BouncingScrollPhysics(), itemCount: cvList.length, itemBuilder: (context, index) => Padding( padding: const EdgeInsets.symmetric(vertical: 10), child: GestureDetector( onTap: ()async{ setState(() { isLoading=true; }); FontService fontById = FontService(); ApiResponseModel response3 =await fontById.getFontById(cvList[index].font); setState(() { isLoading=false; }); Navigator.push( context, MaterialPageRoute(builder: (context) => Apply(font: response3.data,cv: cvList[index],cvModels: cvModels,offerId: offerId,)), ); }, child: CvCard(cv: cvList[index],)), ), ), ) ], ), ), if(isLoading) LoadingScreen() ], ) ); } }