Searchbar软件包,用于抖动适应

问题描述

我正在为我的应用制作搜索栏,但是我不知道如何使旧代码适应这个新软件包。我在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 (将#修改为@)