Flutter 无法搜索联系人
因此,我列出了一个静态联系人列表,并尝试添加一个搜索栏,但无法使用搜索栏搜索联系人。当我点击搜索栏时,它会打开然后关闭。键盘弹出一会儿,然后就会关闭。这个想法是为了使搜索具有预测性,因此当键入一个名称时,它将根据数据库中的名称列出关闭的名称。有什么想法吗Flutter 无法搜索联系人,flutter,flutter-layout,Flutter,Flutter Layout,因此,我列出了一个静态联系人列表,并尝试添加一个搜索栏,但无法使用搜索栏搜索联系人。当我点击搜索栏时,它会打开然后关闭。键盘弹出一会儿,然后就会关闭。这个想法是为了使搜索具有预测性,因此当键入一个名称时,它将根据数据库中的名称列出关闭的名称。有什么想法吗 class ContactsPage extends StatefulWidget { Widget appBarTitle = new Text("Contacts"); Icon actionIcon = new Icon(Icon
class ContactsPage extends StatefulWidget {
Widget appBarTitle = new Text("Contacts");
Icon actionIcon = new Icon(Icons.search);
我已经用预测搜索更新了代码,并删除了未使用的代码
import 'package:flutter/material.dart';
class Contact {
final String fullName;
const Contact({this.fullName});
}
void main() => runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: ContactsPage(),
));
class ContactsPage extends StatefulWidget {
Widget appBarTitle = new Text("Contacts");
Icon actionIcon = new Icon(Icons.search);
final List<Contact> contacts = [
Contact(
fullName: 'Ganesh',
),
Contact(
fullName: 'Dinesh',
),
Contact(
fullName: 'Somesh',
),
Contact(
fullName: 'Ramesh',
)
];
@override
State<StatefulWidget> createState() {
return new _ContactPage(contacts);
}
}
class _ContactPage extends State<ContactsPage> {
List<Contact> filteredContacts;
_ContactPage(this.filteredContacts);
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: widget.appBarTitle,
actions: <Widget>[
new IconButton(
icon: widget.actionIcon,
onPressed: () {
setState(() {
if (widget.actionIcon.icon == Icons.search) {
widget.actionIcon = new Icon(Icons.close);
widget.appBarTitle = new TextField(
style: new TextStyle(
color: Colors.white,
),
decoration: new InputDecoration(
prefixIcon:
new Icon(Icons.search, color: Colors.white),
hintText: "Search...",
hintStyle: new TextStyle(color: Colors.white)),
onChanged: (value) {
filterContacts(value);
},
);
} else {
widget.actionIcon =
new Icon(Icons.search); //reset to initial state
widget.appBarTitle = new Text("Contacts");
filteredContacts = widget.contacts;
}
});
},
),
],
),
body: new ContactList(filteredContacts)),
// replace the body with your contacts list view
);
}
void filterContacts(String value) {
var temp = widget.contacts.where((contact) {
return contact.fullName.contains(value);
}).toList();
setState(() {
filteredContacts = temp;
});
}
}
class ContactList extends StatelessWidget {
final List<Contact> _contacts;
ContactList(this._contacts);
@override
Widget build(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) {
return new _ContactListItem(this._contacts[index]);
},
itemCount: this._contacts.length,
padding: new EdgeInsets.symmetric(vertical: 8.0));
}
}
class _ContactListItem extends ListTile {
_ContactListItem(Contact contact)
: super(
title: new Text(contact.fullName),
leading: new CircleAvatar(child: new Text(contact.fullName[0])));
}
请参阅屏幕截图:
您能给示例kContacts值以在本地运行吗?@Dinesh_Balasubramanian单击搜索栏时,我无法搜索联系人。没有显示键盘。上面的代码对我有效。你是否做了任何改变@Dinesh_Balasubramanian仍然做同样的事情,我将在不同的手机上测试。你们不能看我的其他颤振问题?你们在模拟器中测试吗?不,设备运行。我的笔记本电脑不支持Emulator