【发布时间】:2021-05-28 00:32:01
【问题描述】:
当我在 dropdownMenuItem 中更改所选项目时,我的对话框不会将其更改为我选择的项目。
我有一个下拉菜单显示客户可以选择的内容,当我选择其中一项时,所选项目不会显示在字段中,提示会保留在那里。
它以“SERVIÇO:”开头并在更改项目后保持不变。 变量获得了值,但在显示中没有改变。
Future<void> _addObraServico(BuildContext context) async {
return showDialog(
context: context,
child: new Dialog(
backgroundColor: blueSoftwar,
child: new Column(children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
child: Text(
"SERVIÇOS",
style: TextStyle(
fontSize: 20,
color: Colors.white,
),
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: new Theme(
data: Theme.of(context).copyWith(
canvasColor: orangeSoftwar,
),
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(
5.0) // <--- border radius here
),
),
child: DropdownButton<String>(
isExpanded: true,
value: obraServicoDropDown,
icon: const Icon(
Icons.arrow_downward,
color: Colors.white,
),
style: const TextStyle(color: Colors.white),
underline: SizedBox(),
onChanged: (String newValue) {
setState(() {
obraServicoDropDown = newValue;
print(obraServicoDropDown);
});
},
items: <String>['', 'SERVICO1', 'SERVICO2', 'SERVICO3']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(
value,
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
);
}).toList(),
hint: Container(
child: Text(
" SERVIÇO:",
style: TextStyle(color: Colors.white, fontSize: 20),
textAlign: TextAlign.end,
),
),
),
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: new TextField(
style: TextStyle(color: Colors.white, fontSize: 20),
decoration: new InputDecoration(
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(5.0)),
borderSide: BorderSide(color: Colors.white),
),
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(5.0)),
borderSide: BorderSide(color: Colors.white),
),
hintText: "Descrição *",
hintStyle: TextStyle(fontSize: 20.0, color: Colors.white),
),
controller: _tDescricaoObra,
),
),
if (showAlert)
Text(
"Preencha os campos",
style: TextStyle(fontSize: 20, color: Colors.red),
),
new FlatButton(
color: Colors.orange,
child: new Text(
"CADASTRAR",
style: TextStyle(color: Colors.white),
),
onPressed: () {
if (obraServicoDropDown == null || _tDescricaoObra.text.isEmpty) {
showAlert = true;
} else {
ServicoObra servico = new ServicoObra();
servico.servico = obraServicoDropDown;
servico.descricao = _tDescricaoObra.text;
setState(() {
servicos.add(servico);
});
obraServicoDropDown = null;
_tDescricaoObra.clear();
showAlert = false;
Navigator.pop(context);
}
},
),
]),
),
);
}
【问题讨论】:
标签: flutter dart showdialog