I'm building a search screen with SearchDelegate in Flutter. But cannot remove the leading from it. I tried to return null for buildLeading(), but it still takes space for leading. if there is any other way to achieve the same UI functionality, please recommend me. how can I remove leading? My flutter version is Flutter 3.7.5.
searchDelegate code:
class CustomSearch extends SearchDelegate<String> {
List<String> searchTerms = [
"Apple",
"Banana",
"Mango",
"Pear",
"Watermelons",
"Blueberries",
"Pineapples",
"Strawberries"
];
@override
ThemeData appBarTheme(BuildContext context) {
return ThemeData(
textTheme: TextTheme(
titleLarge: AppStyles.gilroySemiBold16BlueGray600,
),
appBarTheme: const AppBarTheme(
iconTheme: IconThemeData(weight: 0.1),
backgroundColor: AppColors.blue100,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(16),
),
),
),
inputDecorationTheme: AppStyles.inputDecorationTheme(context),
);
}
@override
List<Widget>? buildActions(BuildContext context) {
return [];
}
@override
Widget? buildLeading(BuildContext context) {
return null;
}
// third overwrite to show query result
@override
Widget buildResults(BuildContext context) {
List<String> matchQuery = [];
for (var fruit in searchTerms) {
if (fruit.toLowerCase().contains(query.toLowerCase())) {
matchQuery.add(fruit);
}
}
return ListView.builder(
itemCount: matchQuery.length,
itemBuilder: (context, index) {
var result = matchQuery[index];
return ListTile(
title: Text(result),
);
},
);
}
@override
Widget buildSuggestions(BuildContext context) {
List<String> matchQuery = [];
for (var fruit in searchTerms) {
if (fruit.toLowerCase().contains(query.toLowerCase())) {
matchQuery.add(fruit);
}
}
return ListView.builder(
itemCount: matchQuery.length,
itemBuilder: (context, index) {
var result = matchQuery[index];
return ListTile(
title: Text(result),
);
},
);
}
}