Flutter 颤振:使用按钮输入静态文本

Flutter 颤振:使用按钮输入静态文本,flutter,Flutter,我想让一个静态文本按钮列表,例如(lorem,ipsum等)的搜索栏,所以当我点击按钮,它将输入文本到文本字段。它能在颤振中完成吗 使用SeachDelegatedelegate class CustomSearchHintDelegate extends SearchDelegate { CustomSearchHintDelegate({ String hintText, }) : super( searchFieldLabel: hintText, keyb

我想让一个静态文本按钮列表,例如(lorem,ipsum等)的搜索栏,所以当我点击按钮,它将输入文本到文本字段。它能在颤振中完成吗


使用
SeachDelegate
delegate

class CustomSearchHintDelegate extends SearchDelegate {
  CustomSearchHintDelegate({
    String hintText,
  }) : super(
    searchFieldLabel: hintText,
    keyboardType: TextInputType.text,
    textInputAction: TextInputAction.search,
  );

  @override
  Widget buildLeading(BuildContext context) => Text("leading");

  @override
  Widget buildSuggestions(BuildContext context) => Text("suggestions");

  @override
  Widget buildSuggestions(BuildContext context) {  // This is your list which comes from futurebuilder or streambuilder
    // BookModel bookModel = Provider.of(context);

    if (query.isNotEmpty)

      // return list of books which student wants to search
      return Consumer<BookModel>(
        builder: (_, bookModel, __) {
          return FutureBuilder(
              future: bookModel.searchOperation(query),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                // switch (snapshot.connectionState) /{
                // case ConnectionState.waiting:
                //   return Center(
                //     child: CircularProgressIndicator(),
                //   );
                //   break;
                // case ConnectionState.none:
                //   return Text("Something went wrong");
                //   break;
                // case ConnectionState.done:
                // case ConnectionState.active:
                if (!snapshot.hasData)
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                return snapshot.hasData
                    ? snapshot.data.length != 0
                        ? ListView.builder(
                            itemCount: snapshot.data.length,
                            itemBuilder: (BuildContext context, int index) {
                              return InkWell(
                                onTap: () {
                                  final box = Hive.box("Student");
                                  snapshot.data[index].postedBy != box.get("ID")
                                      ? Navigator.pushReplacement(
                                          context,
                                          MaterialPageRoute(
                                            builder: (context) => BookDetail(
                                              book: snapshot.data[index],
                                            ),
                                          ),
                                        )
                                      : Navigator.push(
                                          context,
                                          MaterialPageRoute(
                                            builder: (con) =>
                                                MyPostedBookDetail(
                                              book: snapshot.data[index],
                                            ),
                                          ),
                                        );
                                },
                                child: ListTile(
                                  title: Text(
                                    snapshot.data[index].bookName.toString(),
                                  ),
                                ),
                              );
                            },
                          )
                        : Column(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            // mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              SizedBox(
                                height: 50,
                              ),
                              Center(
                                child: Text(
                                  "No results found for '$query'",
                                  textAlign: TextAlign.center,
                                  style: TextStyle(fontSize: 18),
                                ),
                              ),
                            ],
                          )
                    : Column(
                        crossAxisAlignment: CrossAxisAlignment.center,
                        // mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          SizedBox(
                            height: 50,
                          ),
                          Center(
                            child: Text(
                              "No results found for '$query'",
                              textAlign: TextAlign.center,
                              style: TextStyle(fontSize: 18),
                            ),
                          ),
                        ],
                      );
                // break;
              }
              // },
              );
        },
      );
    return Container();
  }

  @override
  List<Widget> buildActions(BuildContext context) => [];
}
类CustomSearchHintDelegate扩展了SearchDelegate{
CustomSearchHintDelegate({
字符串hintText,
}):超级(
searchFieldLabel:hintText,
键盘类型:TextInputType.text,
textInputAction:textInputAction.search,
);
@凌驾
小部件buildLeading(BuildContext上下文)=>文本(“leading”);
@凌驾
小部件构建建议(构建上下文)=>文本(“建议”);
@凌驾
Widget buildSuggestions(BuildContext上下文){//这是来自futurebuilder或streambuilder的列表
//BookModel BookModel=Provider.of(上下文);
if(query.isNotEmpty)
//返回学生要搜索的书籍列表
退货消费者(
建筑商:(u,图书模型,uu){
回归未来建设者(
未来:bookModel.searchOperation(查询),
生成器:(BuildContext上下文,异步快照){
//交换机(快照.连接状态)/{
//案例连接状态。正在等待:
//返回中心(
//子对象:CircularProgressIndicator(),
//   );
//中断;
//案例连接状态。无:
//返回文本(“出错”);
//中断;
//案例连接状态。完成:
//案例连接状态.active:
如果(!snapshot.hasData)
返回中心(
子对象:CircularProgressIndicator(),
);
返回snapshot.hasData
?snapshot.data.length!=0
?ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(构建上下文,int索引){
回墨槽(
onTap:(){
最终框=蜂巢框(“学生”);
snapshot.data[index].postedBy!=box.get(“ID”)
?导航器。更换(
上下文
材料路线(
生成器:(上下文)=>BookDetail(
book:snapshot.data[索引],
),
),
)
:Navigator.push(
上下文
材料路线(
建筑商:(con)=>
MyPostedBookDetail(
book:snapshot.data[索引],
),
),
);
},
孩子:ListTile(
标题:正文(
snapshot.data[index].bookName.toString(),
),
),
);
},
)
:列(
crossAxisAlignment:crossAxisAlignment.center,
//mainAxisAlignment:mainAxisAlignment.center,
儿童:[
大小盒子(
身高:50,
),
居中(
子:文本(
“未找到“$query”的结果”,
textAlign:textAlign.center,
样式:TextStyle(字体大小:18),
),
),
],
)
:列(
crossAxisAlignment:crossAxisAlignment.center,
//mainAxisAlignment:mainAxisAlignment.center,
儿童:[
大小盒子(
身高:50,
),
居中(
子:文本(
“未找到“$query”的结果”,
textAlign:textAlign.center,
样式:TextStyle(字体大小:18),
),
),
],
);
//中断;
}
// },
);
},
);
返回容器();
}
@凌驾
列出buildActions(BuildContext上下文)=>[];
}