flutter - searchable_dropdown 不适用于班级列表
问题描述
我使用 searchable_dropdown 1.1.0 包实现了一个颤振下拉菜单,我用我的类列表进行了测试,我发现搜索 TextField 框不适用于我的类列表。当我在列表中的两个字符串/整数中搜索值时,我希望我的下拉搜索框工作。
例如:我希望当我输入数字 1 或键 1 时,它应该显示我搜索的项目
我想知道如何解决这个问题?感谢帮助
这是我的代码。
import 'package:flutter/material.dart';
import 'package:searchable_dropdown/searchable_dropdown.dart';
get_list(){
List<KeyValueModel> datas = [
KeyValueModel(key: "Key 1", value: "Value 1"),
KeyValueModel(key: "Key 2", value: "Value 2"),
KeyValueModel(key: "Key 3", value: "Value 3"),
KeyValueModel(key: "Key 4", value: "Value 4"),
KeyValueModel(key: "Key 5", value: "Value 5"),
];
return datas;
}
//Create a Model class to hold key-value pair data
class KeyValueModel {
String key;
String value;
KeyValueModel({this.key, this.value});
}
class Test extends StatefulWidget {
@override
TestState createState() {
return new TestState();
}
}
class TestState extends State<Test> {
List listan = get_list();
KeyValueModel _selectedValue = KeyValueModel(key: "0", value: "value");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Key value Pair - DropdownButton'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
SearchableDropdown<KeyValueModel>(
isCaseSensitiveSearch: true,
items: listan
.map((data) => DropdownMenuItem<KeyValueModel>(
child: Text(data.key),
value: data,
)).toList(),
onChanged: (KeyValueModel value) {
setState(() => _selectedValue = value);
},
hint: Text('Select Key'),
),
SizedBox(
height: 25.0,
),
Text(_selectedValue.value),
],
),
),
);
}
}
解决方案
这是包中的一些代码。
...
if(widget.isCaseSensitiveSearch){
isContains = item.value.toString().contains(keyword);
}
else{
isContains = item.value.toString().toLowerCase().contains(keyword.toLowerCase());
}
...
它调用toString()
. value
在您的情况下value
是类型KeyValueModel
并且没有覆盖toString()
方法。所以它返回Instance of KeyValueModel
而不是Key 1
这样。
这是返回调用key
时toString()
方法的类。
class KeyValueModel {
String key;
String value;
KeyValueModel({this.key, this.value});
@override
String toString() {
return key;
}
}
推荐阅读
- c# - 如何将 SelectExpandQueryOption 转换为 IQueryable
在 WebAPI 中使用 OData 时? - awk - 如何使用 gawk 5 以确定的方式将字符串转换为 int 等价物?
- python - parse(text) - AttributeError: 'str' object has no attribute 'unknown'
- java - Springboot中SOAP请求/响应的拦截器
- python - 根据另一行中的值将新列分配给DataFrame
- r - mean() 函数可以显示累积分布函数的概率吗?
- python - 对多个图像系列的子图进行动画处理
- bluetooth - Android Wear:使用蓝牙在手机上通过 GSM 进行网络连接
- vb.net - VB.NET 如何在visual studio中制作滑入/滑出申请表(程序)?
- php - 一个 foreach 中的两个变量