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