android-studio - 来自 .json 的颤振下拉列表
问题描述
我是 Flutter 开发的新手。
我想从 .json 文件(大学列表)中检索数据,并允许用户键入第一个字母,以便他们可以在颤振下拉选项中找到他们的大学。
我想从 .json 文件中检索的数据是“nom_court”。
我的初始代码是一个文本字段,它运行良好:
TextFormField buildUniFormField() {
return TextFormField(
keyboardType: TextInputType.uni,
onSaved: (newValue) => uni = newValue,
onChanged: (value) {
if (value.isNotEmpty) {
removeError(error: kEmailNullError);
} else if (emailValidatorRegExp.hasMatch(value)) {
removeError(error: kInvalidEmailError);
}
return null;
},
validator: (value) {
if (value.isEmpty) {
addError(error: kEmailNullError);
return "";
} else if (!emailValidatorRegExp.hasMatch(value)) {
addError(error: kInvalidEmailError);
return "";
}
return null;
},
decoration: InputDecoration(
labelText: "University",
hintText: "Enter your university name",
floatingLabelBehavior: FloatingLabelBehavior.always,
suffixIcon: CustomSurffixIcon(svgIcon: "assets/icons/uni.svg"),
我现在正在尝试使用下拉列表,使用 .json 文件,并将其直接放在小部件代码中:
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: [
buildEmailFormField(),
SizedBox(height: getProportionateScreenHeight(30)),
buildUniFormField(),
DropdownButton<String>(
items:list.map((Map val){
return DropdownMenuItem<String>(
value: val["Uniname"],
child: new Text(val["nom_court"]),
);).toList(),},
它不起作用,我在“下拉按钮”上有一个错误,说“未定义参数 Onchanged ”
谢谢 :)
解决方案
所以,就像你的错误信息说的那样,你没有onChanged
为你的DropdownButton
.
您应该为当前下拉值创建一个状态,并setState
在onChanged
回调()中为当前下拉值创建一个状态,并setState
在onChanged
回调中:
class MyWidgetState extends State<MyWidget> {
String dropdownValue = // here specify the initial value for DropdownButton
Widget build(...) {
//...
DropdownButton(
value: dropdownValue,
onChanged: (value) => setState(() => dropdownValue = value),
items: list.map(...),
),
}
}
我假设您已经在使用 StatefulWidget,如果没有,请阅读文档
推荐阅读
- javascript - Webpack 4 文件加载器将 svg 文件内容更改为 __webpack_public_path__
- sql - 在几年内每周获取最新条目
- android - 如何解决“SplashActivity 泄漏了最初添加在此处的窗口 DecorView”的问题?
- amazon-dynamodb - 按非分区字段查询 DynamoDB
- blazor-server-side - 在项目中使用 Blazorise 不显示菜单
- rust - 如何构建一个没有共享库的 Rust 应用程序?
- python-3.x - Python 脚本的改进 | 表现
- java - 带有嵌入式Jetty的SpringBoot不解包war文件
- android - Android 和 IOS 的 QML 文本输入组件中的拼写检查
- c# - 如何仅通过键比较两个 json 对象?