Add search bar

This commit is contained in:
2024-10-24 07:37:12 +00:00
committed by GitHub
parent a1f8f57447
commit 4334346632
9 changed files with 148 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ import 'package:logging/logging.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:window_manager/window_manager.dart';
import 'api/client.dart';
import 'api/gallery.dart';
import 'auth.dart';
import 'config/base.dart';
import 'config/shared_preferences.dart';
@@ -309,6 +310,31 @@ Widget buildMoreVertSettingsButon(BuildContext context) {
);
}
Widget buildSearchButton(BuildContext context, {bool openGallery = true}) {
return auth.meilisearch != null
? SearchAnchor(builder: (context, controller) {
return IconButton(
onPressed: () {
controller.openView();
},
icon: const Icon(Icons.search));
}, suggestionsBuilder: (context, controller) async {
final c = auth.meiliSearchClient!;
final re = await c.index("gmeta").search(controller.text);
return re.asSearchResult().hits.map((e) {
final m = GMetaSearchInfo.fromJson(e);
return ListTile(
title: Text(m.preferredTitle),
onTap: () {
controller.closeView(m.preferredTitle);
if (openGallery) context.push("/gallery/${m.gid}");
},
);
}).toList();
})
: Container();
}
ThemeMode themeModeNext(ThemeMode mode) {
if (mode == ThemeMode.system) return ThemeMode.light;
if (mode == ThemeMode.dark) return ThemeMode.system;