import 'package:aves/model/settings/enums/entry_background.dart'; import 'package:aves/widgets/common/basic/color_indicator.dart'; import 'package:aves/widgets/common/fx/checkered_decoration.dart'; import 'package:aves_model/aves_model.dart'; import 'package:flutter/material.dart'; class EntryBackgroundSelector extends StatefulWidget { final ValueGetter getter; final ValueSetter setter; const EntryBackgroundSelector({ super.key, required this.getter, required this.setter, }); @override State createState() => _EntryBackgroundSelectorState(); } class _EntryBackgroundSelectorState extends State { @override Widget build(BuildContext context) { return DropdownButtonHideUnderline( child: DropdownButton( items: _buildItems(context), value: widget.getter(), onChanged: (selected) { if (selected != null) { widget.setter(selected); setState(() {}); } }, ), ); } List> _buildItems(BuildContext context) { return [ EntryBackground.white, EntryBackground.black, EntryBackground.checkered, ].map((selected) { return DropdownMenuItem( value: selected, child: ColorIndicator( value: selected.isColor ? selected.color : null, child: selected == EntryBackground.checkered ? ClipOval( child: CustomPaint( painter: CheckeredPainter( checkSize: ColorIndicator.radius, ), ), ) : null, ), ); }).toList(); } }