我在Flutter中使用DropdownButtons,UI没有显示选定的项目。当项目被选中时,它 * 正在 * 被设置为状态(我在进入下一页之前进行了检查,以确保所有值都已设置)。
我已经检查了所有内容并仔细检查,在build
方法中没有设置_category
的额外示例。下面列出了build
方法中对_category
的唯一引用,应该通过按钮中对setState
的调用来设置。
下面是我对变量的初始化:
class _MyClass extends State<MyClass>{
...
late String _category ='';
...
@override
void init(){
...
_category = '';
...
super.initState();
}
merchantCategories
变量声明如下:
final List<DropdownMenuItem<String>> merchantCategories = [
const DropdownMenuItem(value: 'AUTOMOTIVE', child: Text('Automotive')),
const DropdownMenuItem(value: 'HOME', child: Text('Home')),
const DropdownMenuItem(value: 'FOOD', child: Text('Food')),
const DropdownMenuItem(value: 'TRAVEL', child: Text('Travel')),
const DropdownMenuItem(
value: 'UTILITIES_AND_TELECOM', child: Text('Utilities and Telecom')),
const DropdownMenuItem(value: 'ELECTRONICS', child: Text('Electronics')),
const DropdownMenuItem(
value: 'HEALTH_AND_BEAUTY', child: Text('Health and Beauty')),
const DropdownMenuItem(
value: 'ENTERTAINMENT', child: Text('Entertainment')),
const DropdownMenuItem(value: 'RETAIL', child: Text('Retail')),
const DropdownMenuItem(
value: 'CHILDREN_AND_FAMILY', child: Text('Children and Family')),
const DropdownMenuItem(
value: 'OFFICE_AND_BUSINESS', child: Text('Office and Business')),
const DropdownMenuItem(
value: 'SERVICES_AND_SUBSCRIPTIONS',
child: Text('Services and Subscriptions'))
];
下面是按钮的实现,使用DecoratedBox在框周围显示边框。
...
DecoratedBox(
decoration: BoxDecoration(
border: Border.all(width: 1),
borderRadius: BorderRadius.circular(4)),
child: DropdownButton<String>(
underline: Container(),
borderRadius: BorderRadius.circular(8),
hint: const Text('Select Merchant Category'),
items: merchantCategories,
onChanged: (value) => setState(() =>_category = value!)),
),
...
1条答案
按热度按时间6jygbczu1#
DropdownButton(根据documentation)有一个值字段,您似乎没有使用。例如:
顺便说一下,我最近从flutter中输入字段的默认实现切换到了一个pub包,该包在Angular FormControls之后对输入字段进行建模。https://pub.dev/packages/reactive_forms