feat: HOME-007 — server-side event title/description search (q param)

This commit is contained in:
2026-04-04 17:33:56 +05:30
parent e9752c3d61
commit 7cd64883e2
2 changed files with 25 additions and 4 deletions

View File

@@ -302,7 +302,9 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
builder: (context, scrollController) {
String query = '';
List<EventModel> results = List.from(_events);
bool searching = false;
return StatefulBuilder(builder: (context, setModalState) {
// Instant client-side filter while typing
void _onQueryChanged(String v) {
query = v.trim().toLowerCase();
final r = _events.where((e) {
@@ -314,6 +316,22 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
});
}
// Server-side search on submit (keyboard action / enter)
Future<void> _onSubmitted(String v) async {
final q = v.trim();
if (q.isEmpty) return;
setModalState(() => searching = true);
try {
final serverResults = await _eventsService.getEventsByPincode(_pincode, q: q);
setModalState(() {
results = serverResults;
searching = false;
});
} catch (_) {
setModalState(() => searching = false);
}
}
return Container(
decoration: BoxDecoration(
color: theme.cardColor,
@@ -357,7 +375,7 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
autofocus: true,
onChanged: _onQueryChanged,
textInputAction: TextInputAction.search,
onSubmitted: (v) => _onQueryChanged(v),
onSubmitted: _onSubmitted,
),
)
],
@@ -372,7 +390,7 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
],
),
const SizedBox(height: 12),
if (_loading)
if (_loading || searching)
Center(child: CircularProgressIndicator(color: theme.colorScheme.primary))
else if (results.isEmpty)
Padding(