Flutter 用于颤振适应的搜索栏包

Flutter 用于颤振适应的搜索栏包,flutter,searchbar,Flutter,Searchbar,我正在为我的应用程序制作搜索栏,但我不知道如何使我的旧代码适应这个新软件包。我在Flatter工作,我下载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 'pac

我正在为我的应用程序制作搜索栏,但我不知道如何使我的旧代码适应这个新软件包。我在Flatter工作,我下载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());
                  }
                },
              ))
            ],
          ),
        )
      ],
    )));
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
导入“package:flappy_search_bar/flappy_search_bar.dart”;
进口“包装:颤振/材料.省道”;
导入“包:lottie/lottie.dart”;
类Searchbar扩展StatefulWidget{
@凌驾
SearchBarState createState()=>SearchBarState();
}
类SearchBarState扩展状态{
TextEditingController TextEditingController=TextEditingController();
最终数据库=Firestore.instance;
字符串搜索字符串;
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
子:列(
儿童:[
扩大(
子:列(
儿童:[
填充物(
填充:常数边集全部(30.0),
子:容器(
孩子:TextField(
一旦更改:(val){
设置状态(){
searchString=val.toLowerCase();
});
},
控制器:textEditingController,
装饰:输入装饰(
后缀:图标按钮(
图标:图标(图标。清除),
按下时:()=>textEditingController.clear()),
hintText:“在此搜索名称”,
hintStyle:TextStyle(
fontFamily:“Antra”,颜色:Colors.蓝灰色,
),
),
),
扩大(
孩子:StreamBuilder(
流:(searchString==null | | searchString.trim()=='')
?Firestore.instance.collection('Users').snapshots()
:Firestore.instance
.collection('用户')
.where('name',isEqualTo:searchString)
.snapshots(),
生成器:(上下文,快照){
if(snapshot.hasError){
返回文本('我们得到一个错误${snapshot.error}');
}
交换机(快照.连接状态){
案例连接状态。正在等待:
返回大小框(
儿童:中心(
//子项:Lottie.asset('animations/loading2.json'),
),
);
案例连接状态。无:
返回文本(“Oops无数据存在”);
案例连接状态。完成:
返回文本(“我们完成了”);
违约:
返回新的ListView(
子项:snapshot.data.documents
.map((文档快照文档){
返回新的ListTile(
标题:文本(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()));
                },
              ),
            );
          },
        ),
      ),
        );
  }
@覆盖
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
孩子:搜索栏(
搜索栏填充:边集。对称(水平:10),
头部添加:边缘组。对称(水平:10),
列表填充:边集。对称(水平:10),
onSearch:_getALlPosts,
searchBarController:\u searchBarController,
占位符:文本(“占位符”),
cancellationWidget:文本(“取消”),
emptyWidget:Text(“empty”),
indexedScaledTileBuilder:(int index)=>ScaledTile.count(1,index.isEven?2:1),
标题:行(
儿童:[
升起的按钮(
子项:文本(“排序”),
已按下:(){
_searchBarController.sortList((a柱、b柱){
返回a.body.compareTo(b.body);
});
},
),
升起的按钮(
子项:文本(“解吸”),
已按下:(){
_searchBarController.removeSort();
},
),
升起的按钮(
子:文本(“重播”),
已按下:(){
isReplay=!isReplay;
_searchBarController.replayLastSearch();
},
),
],
),
一旦取消:(){
打印(“取消触发”);
},
平均间距:10,
横轴间距:10,
交叉轴计数:2,
onItemFound:(Post-Post,int-index){
返回容器(
颜色:颜色。浅蓝色,
孩子:ListTile(
标题:文本(后标题),
伊斯特里琳:是的,
字幕:文本(后正文),
onTap:(){
Navigator.of(context).push(MaterialPageRoute(builder:(context)=>Detail());
},
),
);
},
),
),
);
}
你知道如何更改代码以使用此软件包(从软件包中设置搜索栏的样式)吗