如何解决有没有办法使用 material_floating_search_bar dart 包在页面中央显示搜索栏,而不仅仅是顶部?
我使用 flutter 进行开发,使用 material_floating_search_bar 包作为搜索字段。 id 喜欢显示搜索栏而不是文本字段小部件,但它会引发太多错误。我对相同结果的替代建议持开放态度。一旦文本字段小部件成为焦点,我就会使用该包来实现材质动画效果。
static const id = "welcome_scr";
@override
_WelcomeScreenState createState() => _WelcomeScreenState();
}
class _WelcomeScreenState extends State<WelcomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,backgroundColor: Colors.white,body: Stack(
fit: StackFit.expand,children: [
buildFloatingSearchBar(),SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.start,children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 25,vertical: 40,),child: Column(
mainAxisAlignment: MainAxisAlignment.start,children: [
Row(
children: [
CircleAvatar(
backgroundColor: Colors.blue,radius: 20.0,SizedBox(
width: 15,Text(
'Hi,Keshav!',style: TextStyle(
fontWeight: FontWeight.w500,fontSize: 16),)
],SizedBox(
height: 55,Text(
'Where do \nyou want to go?',style: TextStyle(
fontSize: 31,fontWeight: FontWeight.bold),SizedBox(
height: 20,GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => Demo()));
},child:
//I WANT THE SEARCHBAR TO BE DISPLAYED HERE INSTEAD OF TEXTFIELD WITHOUT GESTURE DETECTOR AS ITS PARENT
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(width: 2),borderRadius: const BorderRadius.all(
const Radius.circular(15.0),suffixIcon: Icon(
Icons.search,color: Colors.grey,size: 30.0,keyboardType: TextInputType.text,],Expanded(
child: ShaderMask(
shaderCallback: (rect) {
return LinearGradient(
begin: Alignment.topCenter,end: Alignment.center,colors: [Colors.transparent,Colors.white],).createShader(
Rect.fromLTRB(0,rect.width,rect.height));
},blendMode: BlendMode.dstIn,child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('images/island-Caribbean.jpg'),fit: BoxFit.cover),);
}
}
Widget buildFloatingSearchBar() {
return FloatingSearchBar(
hint: 'Search...',scrollPadding: const EdgeInsets.only(top: 16,bottom: 56),transitionDuration: const Duration(milliseconds: 800),transitionCurve: Curves.easeInOut,physics: const BouncingScrollPhysics(),axisAlignment: 0.0,openAxisAlignment: 0.0,width: 600,debounceDelay: const Duration(milliseconds: 500),onQueryChanged: (query) {
// Call your model,bloc,controller here.
},// Specify a custom transition to be used for
// animating between opened and closed stated.
transition: CircularFloatingSearchBarTransition(),actions: [
FloatingSearchBarAction(
showIfOpened: false,child: CircularButton(
icon: const Icon(Icons.place),onPressed: () {},FloatingSearchBarAction.searchToClear(
showIfClosed: false,builder: (context,transition) {
return ClipRRect(
borderRadius: BorderRadius.circular(15),child: Material(
color: Colors.white,elevation: 4.0,child: Column(
mainAxisSize: MainAxisSize.min,children: Colors.accents.map((color) {
return Container(height: 112,color: color);
}).toList(),);
},);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。