问题描述
我正在为我的应用制作搜索栏,但是我不知道如何使旧代码适应这个新软件包。我在Flutter中工作,我下载了import'package:flappy_search_bar / flappy_search_bar.dart';而且我在搜索栏中使用此代码
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flappy_search_bar/flappy_search_bar.dart';
import 'package:Flutter/material.dart';
import 'package:lottie/lottie.dart';
class Searchbar extends StatefulWidget {
@override
SearchBarState createState() => SearchBarState();
}
class SearchBarState extends State<Searchbar> {
TextEditingController textEditingController = TextEditingController();
final database = Firestore.instance;
String searchString;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
children: <Widget>[
Expanded(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(30.0),child: Container(
child: TextField(
onChanged: (val) {
setState(() {
searchString = val.toLowerCase();
});
},controller: textEditingController,decoration: Inputdecoration(
suffixIcon: IconButton(
icon: Icon(Icons.clear),onpressed: () => textEditingController.clear()),hintText: " Search name here ",hintStyle: TextStyle(
fontFamily: 'Antra',color: Colors.blueGrey)),),Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: (searchString == null || searchString.trim() == '')
? Firestore.instance.collection('Users').snapshots()
: Firestore.instance
.collection('Users')
.where('name',isEqualTo: searchString)
.snapshots(),builder: (context,snapshot) {
if (snapshot.hasError) {
return Text('We got an error ${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return SizedBox(
child: Center(
// child: Lottie.asset('animations/loading2.json'),);
case ConnectionState.none:
return Text('Oops no data present');
case ConnectionState.done:
return Text('We are done');
default:
return new ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) {
return new ListTile(
title: Text(document.data['name']),);
}).toList());
}
},))
],)
],)));
}
}
这就是他们用作示例:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: SearchBar<Post>(
searchBarPadding: EdgeInsets.symmetric(horizontal: 10),headerPadding: EdgeInsets.symmetric(horizontal: 10),listPadding: EdgeInsets.symmetric(horizontal: 10),onSearch: _getALlPosts,searchBarController: _searchBarController,placeHolder: Text("placeholder"),cancellationWidget: Text("Cancel"),emptyWidget: Text("empty"),indexedScaledTileBuilder: (int index) => ScaledTile.count(1,index.isEven ? 2 : 1),header: Row(
children: <Widget>[
RaisedButton(
child: Text("sort"),onpressed: () {
_searchBarController.sortList((Post a,Post b) {
return a.body.compareto(b.body);
});
},RaisedButton(
child: Text("Desort"),onpressed: () {
_searchBarController.removeSort();
},RaisedButton(
child: Text("Replay"),onpressed: () {
isReplay = !isReplay;
_searchBarController.replayLastSearch();
},],onCancelled: () {
print("Cancelled triggered");
},mainAxisspacing: 10,crossAxisspacing: 10,crossAxisCount: 2,onItemFound: (Post post,int index) {
return Container(
color: Colors.lightBlue,child: ListTile(
title: Text(post.title),isThreeLine: true,subtitle: Text(post.body),onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => Detail()));
},);
},);
}
您知道如何更改代码以使用此程序包(从程序包中设置搜索栏样式)吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)