Dart 带有int项的下拉按钮不工作,它不选择新值
我需要创建带有int项的DropdownButton小部件,但它不能按预期工作 代码如下:Dart 带有int项的下拉按钮不工作,它不选择新值,dart,flutter,Dart,Flutter,我需要创建带有int项的DropdownButton小部件,但它不能按预期工作 代码如下: DropdownButton<int>( hint: Text("Pick"), items: <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((int value) { return new DropdownMenuItem<int>( value: _number_tickets_tota
DropdownButton<int>(
hint: Text("Pick"),
items: <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((int value) {
return new DropdownMenuItem<int>(
value: _number_tickets_total,
child: new Text(_number_tickets_total.toString()),
);
}).toList(),
onChanged: (newVal) {
setState(() {
_number_tickets_total = newVal;
});
})
下拉按钮(
提示:文本(“拾取”),
项目:[1,2,3,4,5,6,7,8,9,10]。地图((int值){
返回新的DropdownMenuItem(
值:\车票数量\车票总数,
子项:新文本(_number_tickets_total.toString()),
);
}).toList(),
更改后:(newVal){
设置状态(){
_车票数量=总票数=新票数;
});
})
问题是小部件从未获得所选的值。即使我选择了一个值,我也总能看到“提示”文本。您缺少的是下拉按钮的
value
属性。当该值为空时,它将显示提示,否则为最新选定值
您在下拉项中使用的值与整个列表无关,这就是为什么您应该向它们传递相关信息的原因。我用下面的value属性修改了代码
DropdownButton<int>(
hint: Text("Pick"),
value: _number_tickets_total,
items: <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((int value) {
return new DropdownMenuItem<int>(
value: value,
child: new Text(value.toString()),
);
}).toList(),
onChanged: (newVal) {
setState(() {
_number_tickets_total = newVal;
});
});
下拉按钮(
提示:文本(“拾取”),
值:\车票数量\车票总数,
项目:[1,2,3,4,5,6,7,8,9,10]。地图((int值){
返回新的DropdownMenuItem(
价值:价值,
子项:新文本(value.toString()),
);
}).toList(),
更改后:(newVal){
设置状态(){
_车票数量=总票数=新票数;
});
});
您缺少的是下拉按钮的值
属性。当该值为空时,它将显示提示,否则为最新选定值
您在下拉项中使用的值与整个列表无关,这就是为什么您应该向它们传递相关信息的原因。我用下面的value属性修改了代码
DropdownButton<int>(
hint: Text("Pick"),
value: _number_tickets_total,
items: <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((int value) {
return new DropdownMenuItem<int>(
value: value,
child: new Text(value.toString()),
);
}).toList(),
onChanged: (newVal) {
setState(() {
_number_tickets_total = newVal;
});
});
下拉按钮(
提示:文本(“拾取”),
值:\车票数量\车票总数,
项目:[1,2,3,4,5,6,7,8,9,10]。地图((int值){
返回新的DropdownMenuItem(
价值:价值,
子项:新文本(value.toString()),
);
}).toList(),
更改后:(newVal){
设置状态(){
_车票数量=总票数=新票数;
});
});