import 'package:flutter/material.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; class SingleStatusMenu extends StatefulWidget { final List statuses; final Lookup initialStatus; final Function(Lookup) onSelect; const SingleStatusMenu({Key key, this.statuses, this.onSelect, this.initialStatus}) : super(key: key); @override _SingleStatusMenuState createState() => _SingleStatusMenuState(); } class _SingleStatusMenuState extends State { Lookup _selectedStatus; @override void didUpdateWidget(covariant SingleStatusMenu oldWidget) { if(widget.initialStatus != null){ _selectedStatus = widget.statuses?.firstWhere( (element) { return element?.id == widget.initialStatus.id; }); } else { _selectedStatus = null; } super.didUpdateWidget(oldWidget); } @override void initState() { if(widget.initialStatus != null){ _selectedStatus = widget.statuses?.firstWhere( (element) { return element?.id == widget.initialStatus.id; }); } super.initState(); } @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.symmetric( horizontal: 16 ), decoration: BoxDecoration( color: Colors.white, border: Border.all(color:AColors.black), borderRadius: BorderRadius.circular( AppStyle.borderRadius * AppStyle.getScaleFactor(context) ), boxShadow: const [ AppStyle.boxShadow ] ), child: DropdownButton( value: _selectedStatus, iconSize: 24, elevation: 16, isExpanded: true, hint: Text( "Select", style: Theme.of(context).textTheme.subtitle1, ), style: TextStyle( color: Theme.of(context).primaryColor ), underline: SizedBox.shrink(), onChanged: (Lookup newValue) { setState(() { _selectedStatus = newValue; }); widget.onSelect(newValue); }, items: widget.statuses .map>((Lookup value) { return DropdownMenuItem( value: value, child: Text( value.label, style: Theme.of(context).textTheme.subtitle1.copyWith( color: Theme.of(context).primaryColor, fontSize: 11, //fontWeight: FontWeight.bold ), ), ); }) .toList(), ), ); } }