繁体   English   中英

使用搜索栏搜索 sqflite 数据库(颤振)

[英]Search through sqflite database (flutter) with a Searchbar

我正在寻找一种通过搜索栏搜索 sqflite 数据库表的解决方案。 我在我的数据库中创建了一个“客户”表,如果我在搜索栏中输入与数据库条目相关的名字(我的代码中的“vorname” - 德语),我希望它显示在 ListView 中(我想出了如何通过教程将 ListView 作为结果返回)

我有一个 function getCustomers 它返回客户的所有属性 - 这可能会有所帮助。

我想到了一个 Databasehelper,它可以将我的数据库中的表客户或所有名字 (vorname) 作为一个列表,我可以比较搜索栏中的输入字符串是否与该列表中的字符串相关。 也可能与 FutureBuilder 相关。 我不知道如何执行此操作,当然我愿意接受任何解决方案。 任何帮助将不胜感激 - 如果您需要更多代码,请告诉我。

getCustomers() 在我还创建数据库的文件中:

Future<List<Customer>> getCustomers() async {
    Database _db = await database();
    List<Map<String, dynamic>> customerMap = await _db.query('customers');
    return List.generate(customerMap.length, (index){
      return Customer(
        id: customerMap[index]['id'],
        vorname: customerMap[index]['vorname'],
        nachname: customerMap[index]['nachname'],
        telefonnummer: customerMap[index]['telefonnummer'],
        email: customerMap[index]['email']
      );
    });
  }

我拥有的代码(来自教程) - 都在同一个文件中,除了显示搜索栏有效之外没有任何实际功能:

Function 创建结果:

    await Future.delayed(Duration(seconds: 2));
    return List.generate(10, (int index) {
      return Post(
        "Vorname $index",
        "Nachname $index",
      );
    });
  }

发布 class:


class Post {
  final String vorname;
  final String nachname;

  Post(this.vorname, this.nachname);
}

搜索栏:

SearchBar(
           onSearch: search,
              onItemFound: (Post post, int index) {
                 return ListTile(
                   title: Text(post.vorname),
                    subtitle: Text(post.nachname),
                 );
               },
             )

你可以试试这个...

 Future<List<Customer>> searchCustomer(String name) async{
    var res = await db.query(
      "customers",
      where: "vorname LIKE ?"
      whereArgs: ['%$name']
     );
    List<Customer> customerList = res.map((element)=>Customer(
            id: element[index]['id'],
            vorname: element['vorname'],
            nachname: element['nachname'],
            telefonnummer: element['telefonnummer'],
            email: element['email']
          ));
    return customerList;
    
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM