首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >searchable_dropdown不使用类列表

searchable_dropdown不使用类列表
EN

Stack Overflow用户
提问于 2020-02-02 19:29:23
回答 1查看 4K关注 0票数 3

我使用searchable_dropdown 1.1.0包实现了一个颤动下拉菜单,我用我的类列表进行了测试,我发现搜索TextField框不能与我的类列表一起工作。我想让我的下拉搜索框在我的列表中同时搜索字符串/整型值时起作用。

例如:我希望当我输入数字1或键1时,它应该显示我搜索的项目

我想知道如何解决这个问题?感谢你的帮助

这是我的代码。

代码语言:javascript
复制
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),
          ],
        ),
      ),
    );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-02 20:07:37

下面是包中的一小段代码。

代码语言:javascript
复制
...

if(widget.isCaseSensitiveSearch){
   isContains = item.value.toString().contains(keyword);
}
else{
   isContains = item.value.toString().toLowerCase().contains(keyword.toLowerCase());
}

...

它在value上调用toString()。在本例中,valueKeyValueModel类型,并且没有被覆盖的toString()方法。所以它返回Instance of KeyValueModel而不是Key 1或类似的东西。

下面是调用toString()方法时返回key的类。

代码语言:javascript
复制
class KeyValueModel {
  String key;
  String value;

  KeyValueModel({this.key, this.value});

  @override
  String toString() {
    return key;
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60025636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档