Dart 如何添加颤振下拉按钮FormField
初学者颤振爱好者在这里,只是学习小部件系统。 想要使用开箱即用的小部件实现自动完成文本字段(不是插件ok) DropdownButtonFormField非常适合我的用例,但是当我尝试使用它时,编译器会给我一个方法NotFound错误Dart 如何添加颤振下拉按钮FormField,dart,flutter,widget,dropdown,Dart,Flutter,Widget,Dropdown,初学者颤振爱好者在这里,只是学习小部件系统。 想要使用开箱即用的小部件实现自动完成文本字段(不是插件ok) DropdownButtonFormField非常适合我的用例,但是当我尝试使用它时,编译器会给我一个方法NotFound错误 Compiler message: lib/expanding_text.dart:100:11: Error: Method not found: 'DropdownButtonFormField'. DropdownButtonFormFi
Compiler message:
lib/expanding_text.dart:100:11: Error: Method not found: 'DropdownButtonFormField'.
DropdownButtonFormField(),
^^^^^^^^^^^^^^^^^^^^^^^
lib/expanding_text.dart:100:11: Error: The method 'DropdownButtonFormField' isn't defined for the class '#lib1::_TripItemState'.
Try correcting the name to the name of an existing method, or defining a method named 'DropdownButtonFormField'.
DropdownButtonFormField(),
这是我的代码(相关部分)
导入“包装:颤振/材料.省道”;
...
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
下拉按钮窗体字段(
项目:[DropdownMenuItem(子项:文本(“测试”))],
),
看这些文档,我似乎可以自由地将其添加到小部件树中,而无需额外配置。但很明显,由于错误,我在这里遗漏了一些东西
因此,要解决发生的问题,DropdownButtonFormField是否仍在材质库中
我还缺少什么吗?小部件确实存在于
flatter/materials.dart
中
DropdownButtonFormField
要求在其构造函数中定义items
属性。您需要像这样使用它:
import 'package:flutter/material.dart';
...
@override
Widget build(BuildContext context) {
return Column(children: <Widget>[
DropdownButtonFormField(
items: <DropdownMenuItem>[
// Put widgets in the drop down menu here
],
)
]);
}
导入“包装:颤振/材料.省道”;
...
@凌驾
小部件构建(构建上下文){
返回列(子项:[
下拉按钮窗体字段(
项目:[
//将小部件放在这里的下拉菜单中
],
)
]);
}
小部件确实存在于flift/materials.dart中。
import 'package:flutter/material.dart';
...
String _selectedValue;
List<String> listOfValue = ['1', '2', '3', '4', '5'];
@override
Widget build(BuildContext context) {
return DropdownButtonFormField(
value: _selectedValue,
hint: Text(
'choose one',
),
isExpanded: true,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
onSaved: (value) {
setState(() {
_selectedValue = value;
});
},
validator: (String value) {
if (value.isEmpty) {
return "can't empty";
} else {
return null;
}
},
items: listOfValue
.map((String val) {
return DropdownMenuItem(
value: val,
child: Text(
val,
),
);
}).toList(),
);
}
导入“包装:颤振/材料.省道”;
...
字符串_selectedValue;
List listOfValue=['1','2','3','4','5'];
@凌驾
小部件构建(构建上下文){
返回DropdownButtonFormField(
值:_selectedValue,
提示:文本(
“选择一个”,
),
是的,
一旦更改:(值){
设置状态(){
_selectedValue=值;
});
},
已保存:(值){
设置状态(){
_selectedValue=值;
});
},
验证器:(字符串值){
if(value.isEmpty){
返回“不能为空”;
}否则{
返回null;
}
},
项目:价值清单
.map((字符串val){
返回下拉菜单项(
值:val,
子:文本(
瓦尔,
),
);
}).toList(),
);
}
谢谢,我在原始代码中确实有这样的内容。编辑了这篇文章。这可能与以下事实有关:dropdownbutonformfield
需要一个items参数,该参数包含列表中的dropdownbonmenuitem
。将项目:
替换为[dropdownbonmenuitem]可能会有所帮助(值:1,子项:Text(“test”)]
,您的代码无法编译,也无法从SwiftingDuster答案中改进。无论如何,谢谢。
import 'package:flutter/material.dart';
...
String _selectedValue;
List<String> listOfValue = ['1', '2', '3', '4', '5'];
@override
Widget build(BuildContext context) {
return DropdownButtonFormField(
value: _selectedValue,
hint: Text(
'choose one',
),
isExpanded: true,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
onSaved: (value) {
setState(() {
_selectedValue = value;
});
},
validator: (String value) {
if (value.isEmpty) {
return "can't empty";
} else {
return null;
}
},
items: listOfValue
.map((String val) {
return DropdownMenuItem(
value: val,
child: Text(
val,
),
);
}).toList(),
);
}