我在TileList的尾部放置了一个DropdownButton,设置了文档中显示的参数以使其处于活动状态,但是无论如何它都保持禁用状态。
ListTile是ListView的一部分,未包含在下面的代码中。 我像声明的文档一样设置setState(),但无济于事。 我无法找到此问题的根本原因,不知道是什么原因造成的。
我尝试用int作为值的枚举,但是它也没有用。
...
final Store<AppState> store;
Units unit;
@override
void initState() {
super.initState();
unit = store.state.weatherState?.temperature?.unit;
}
...
enum Units {Celsius, Fahrenheit, Kelvin}
Widget _displayUnitsSettings({Store<AppState> store}) {
return ListTile(
dense: true,
enabled: true,
selected: true,
title: Text(
"Temperature Unit",
style: TextStyle(
decoration: TextDecoration.underline,
decorationStyle: TextDecorationStyle.dotted,
fontSize: 14,
fontWeight: FontWeight.w700,
color: Colors.white),
),
subtitle: Text(
"Default: Celsius.\nAvailable units: Celsius, Fahrenheit, Kelvin.",
style: TextStyle(
fontSize: 9, fontWeight: FontWeight.w700, color: Colors.white54),
),
trailing: DropdownButton(
style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w700, color: Colors.white54),
isDense: true,
value: unit,
onChanged: (value) {
store.dispatch(ChangeUnit(unit: value));
setState(() {
unit = value;
});
},
items: <DropdownMenuItem>[
DropdownMenuItem(
value: Units.Celsius,
child: Text("Celsius"),
),
DropdownMenuItem(
value: Units.Fahrenheit,
child: Text("Fahrenheit"),
),
DropdownMenuItem(
value: Units.Kelvin,
child: Text("Kelvin"),
),
],
),
);
}
...
编辑:“下拉按钮”似乎已启用,但我无法单击它。
答案 0 :(得分:1)
这是问题所在。您有AppBar
,在ListView
上Stack
之后没有位置。这意味着AppBar
与您的ListView
重叠,因此拦截了您DropdownButton
上的手势。
用AppBar
小部件包装Positioned
,它将起作用。像这样:
Positioned(
top: 0.0,
left: 0.0,
right: 0.0,
child: AppBar(
leading: _backButton(context),
backgroundColor: Colors.transparent,
elevation: 0,
),
),