- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 setState 更改事件(例如按下按钮)的 DropdownButtonFormField 值。但它不起作用。
注意:如果我使用 DropdownButton,它可以工作,但使用 DropdownButtonFormField 它没有响应。
这是一个简单的代码,显示了我正在尝试实现的内容。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Testing(),
);
}
}
class Testing extends StatefulWidget {
@override
_TestingState createState() => _TestingState();
}
class _TestingState extends State<Testing> {
String selectedValue;
@override
Widget build(BuildContext context) {
return Material(
child: Column(
children: <Widget>[
DropdownButtonFormField(
value: selectedValue,
items: ['one', 'two'].map((value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (value) {
setState(() {
selectedValue = value;
});
},
),
RaisedButton(
child: Text('test'),
onPressed: (){
setState(() {
selectedValue = 'two';
});
},
),
],
),
);
}
}
最佳答案
从 Global Key 定义实例变量并将其传递给 DropdownButtonFormField
final dropdownState = GlobalKey<FormFieldState>();
你可以通过调用这个方法来改变dropDownFieldItem的值
dropdownState.currentState.didChange('two');
最终代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Testing(),
);
}
}
class Testing extends StatefulWidget {
@override
_TestingState createState() => _TestingState();
}
class _TestingState extends State<Testing> {
String selectedValue;
final dropdownState = GlobalKey<FormFieldState>();
@override
Widget build(BuildContext context) {
return Material(
child: Column(
children: <Widget>[
DropdownButtonFormField(
key: dropdownState,
value: selectedValue,
items: ['one', 'two'].map((value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (value) {
setState(() {
selectedValue = value;
});
},
),
RaisedButton(
child: Text('test'),
onPressed: () {
dropdownState.currentState.didChange('one');
},
),
],
),
);
}
}
关于flutter - 以编程方式更改 DropdownButtonFormField 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61600934/
如何从 DropdownButtonFormField 重置或选择第一个值? 答案来自这里 How to reset value in Flutter DropdownButtonFormField已
我有一个包含多个 DropdownButtonFormField 的表单并且除了一个之外,所有其他人都工作正常,这有点奇怪,因为抛出与我一段时间后发现的内容无关的错误,进行故障排除。 错误是: (错误
我想重置 DropdownButtonFormField。我设法通过将其设置为 null 并使用 globalkey 作为以下代码来重置它。 在这里,问题是我需要 点击两次重置它。 注意:我知道使用
我试图通过从 API 获取值来填充下拉列表。 当我单击下拉列表时,正在显示值,当我尝试选择一个值时,会引发以下错误 items.isEmpty || value == null || items.w
我在一行中并排添加一个 DropdownFormField 和 TextFormField。这是构建函数的样子 Widget build(BuildContext context) { ret
我在一行中并排添加一个 DropdownFormField 和 TextFormField。这是构建函数的样子 Widget build(BuildContext context) { ret
我认为我不太了解 Flutter 中的约束,所以请耐心等待! 我想要 DropdownButtonFormField 从数据库中填充其项目。该字符串可以是任何动态长度。所以我决定使用固定宽度的 Dro
我正在尝试使用 setState 更改事件(例如按下按钮)的 DropdownButtonFormField 值。但它不起作用。 注意:如果我使用 DropdownButton,它可以工作,但使用 D
这是包含 2 个 DropdownButtonFormField 的 Row 中的代码 return Form( key: _formKey, child: SingleChildSc
将 Flutter 更新到 1.17.0 后,我注意到 DropdownButtonFormField表现出乎意料。 当我选择一个我不允许选择的项目时,它仍然会在 DropdownButtonForm
friend , 我在 Flutter 中处理 DropdownButtonFormField。如果 menuitem 是非常大的文本,它会溢出。谁能建议如何解决这个问题。 提前致谢。 Paddi
初学Flutter爱好者,刚刚学习widget系统。想要使用开箱即用的小部件(不是插件好)实现自动完成文本字段DropdownButtonFormField 非常适合我的用例,但当我尝试使用它时,编译
我怎样才能从 DropdownButtonFormField 中删除下划线(查看下图),我已经尝试了各种选项与 InputDecortaion 的组合,但找不到任何方法。 SizedBox( wi
在关闭并重新打开 AlertDialog 框之前,我的下拉按钮值不会更新。 我在类(class)的顶部设置了变量 class _ItemListState extends State { int
在 Flutter 中,DropdownButtonFormField 的模态列表不断增长,以填充似乎是屏幕约 90% 的高度限制(或者可能,更可能的是,Container它在)。当它达到该限制时,它
我在 Flutter 中有一个带有 textformfield 和 dropdownbuttonformfield 的表单。运行我的应用程序时,提示对我不起作用。 提示 未显示在下拉按钮表单字段中。它
我在表单中使用了 DropdownButtonFormField。此外,我希望它在展开 View 中的宽度与下拉按钮的宽度相同,因此我将其包装在 ButtonTheme 中并设置 alignedDro
我是一名优秀的程序员,十分优秀!