import 'package:flutter/material.dart'; import 'package:test_sa/models/service_request/search_work_order.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; class SupplierEngineersMenu extends StatefulWidget { final List engineers; final SuppEngineerWorkOrders initialValue; final Function(SuppEngineerWorkOrders) onSelect; const SupplierEngineersMenu({Key key, this.engineers, this.onSelect, this.initialValue}) : super(key: key); @override SingleAssistantEmployeeMenuState createState() => SingleAssistantEmployeeMenuState(); } class SingleAssistantEmployeeMenuState extends State { SuppPersons _selectedEngineer; @override void setState(VoidCallback fn) { if (mounted) super.setState(fn); } @override void didUpdateWidget(covariant SupplierEngineersMenu oldWidget) { if (widget.initialValue != null) { final result = widget.engineers?.where((element) { return element?.id == widget.initialValue?.supplierContactId; }); if (result.isNotEmpty) { _selectedEngineer = result.first; } else { _selectedEngineer = null; } if ((widget.initialValue?.supplierContactId ?? "") != (_selectedEngineer?.id ?? "")) { onSelect(_selectedEngineer); } } else { _selectedEngineer = null; } super.didUpdateWidget(oldWidget); } @override void initState() { if (widget.initialValue != null) { final result = widget.engineers?.where((element) { return element?.id == widget.initialValue?.supplierContactId; }); if (result.isNotEmpty) _selectedEngineer = result.first; if (widget.initialValue?.supplierContactId != _selectedEngineer?.id) { onSelect(_selectedEngineer); } } super.initState(); } @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( color: AColors.inputFieldBackgroundColor, border: Border.all( color: const Color(0xffefefef), ), borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // boxShadow: const [ // AppStyle.boxShadow // ] ), child: DropdownButton( value: _selectedEngineer, iconSize: 24, icon: const Icon(Icons.keyboard_arrow_down_rounded), elevation: 0, isExpanded: true, hint: Text("Vendor Engineer", style: Theme.of(context).textTheme.titleMedium), style: TextStyle(color: Theme.of(context).primaryColor), underline: const SizedBox.shrink(), onChanged: (SuppPersons newValue) { setState(() { _selectedEngineer = newValue; }); onSelect(newValue); }, items: widget.engineers?.map>((SuppPersons value) { return DropdownMenuItem( value: value, child: Text( value?.personName ?? "NULL", style: Theme.of(context).textTheme.titleMedium.copyWith( color: Theme.of(context).primaryColor, fontSize: 11, //fontWeight: FontWeight.bold ), ), ); })?.toList(), ), ); } void onSelect(SuppPersons engineer) { widget.onSelect( SuppEngineerWorkOrders( id: engineer?.supplierId, supplierContactId: engineer?.id, personName: engineer?.personName, contact: engineer?.contact, externalEngCode: engineer?.externalEngCode, email: engineer?.email, ), ); } }