import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wallpaperx/generated/assets.dart'; class SearchAppbar extends StatelessWidget implements PreferredSizeWidget { const SearchAppbar({ super.key, required this.onTapToSearch, required this.onTapToCategory, this.title, this.titleStyle, this.searchIcon, this.groupIcon, this.iconWitch, this.showDown, }); final Function() onTapToSearch; final Function() onTapToCategory; final String? title; final TextStyle? titleStyle; final String? searchIcon; final String? groupIcon; final double? iconWitch; final bool? showDown; @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 24).w, width: double.infinity, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( padding: const EdgeInsets.all(5).w, decoration: BoxDecoration( color: Colors.black87, borderRadius: BorderRadius.circular(10).w, ), child: GestureDetector( onTap: onTapToCategory, child: Image.asset( width: iconWitch ?? 20.w, color: Colors.white, groupIcon ?? Assets.iconCategory, ), ), ), title == null ? Container() : Row( children: [ showDown ?? true ? Image.asset( width: 24.w, Assets.iconDown, ) : Container(), Stack( clipBehavior: Clip.none, children: [ Positioned( bottom: 6.5.w, right: 0, child: Image.asset( width: 30.w, Assets.iconNameBackground1, ), ), Positioned( top: 3.w, right: -8.w, child: Image.asset( width: 8.w, Assets.iconNameBackground2, ), ), Text( title ?? "", maxLines: 1, overflow: TextOverflow.ellipsis, style: titleStyle ?? TextStyle( color: Colors.white, fontSize: 20.sp, fontWeight: FontWeight.w500, ), ) ], ), 10.horizontalSpace, showDown ?? true ? Image.asset( width: 24.w, Assets.iconDown, ) : Container(), ], ), Container( padding: const EdgeInsets.all(5).w, decoration: BoxDecoration( color: Colors.black87, borderRadius: BorderRadius.circular(10).w, ), child: GestureDetector( onTap: onTapToSearch, child: Image.asset( width: iconWitch ?? 20.w, color: Colors.white, searchIcon ?? Assets.iconSearch, ), ), ), ], ), ); ; } @override Size get preferredSize => Size.fromHeight(ScreenUtil().statusBarHeight + kToolbarHeight); }