45 lines
1.3 KiB
Dart
45 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../../../api/marianumcloud/talk/room/get_room_response.dart';
|
|
import 'widgets/chat_tile.dart';
|
|
|
|
class SearchChat extends SearchDelegate<GetRoomResponseObject?> {
|
|
List<GetRoomResponseObject> chats;
|
|
|
|
SearchChat(this.chats);
|
|
|
|
@override
|
|
List<Widget>? buildActions(BuildContext context) => [
|
|
if (query.isNotEmpty)
|
|
IconButton(onPressed: () => query = '', icon: const Icon(Icons.delete)),
|
|
];
|
|
|
|
@override
|
|
Widget? buildLeading(BuildContext context) => null;
|
|
|
|
@override
|
|
Widget buildResults(BuildContext context) {
|
|
var items =
|
|
chats
|
|
.where(
|
|
(e) =>
|
|
e.displayName.toString().toLowerCase().contains(
|
|
query.toLowerCase(),
|
|
) ||
|
|
e.name.toString().toLowerCase().contains(query.toLowerCase()),
|
|
)
|
|
.toList()
|
|
..sort((a, b) => b.lastActivity.compareTo(a.lastActivity));
|
|
return ListView.builder(
|
|
itemCount: items.length,
|
|
itemBuilder: (context, index) {
|
|
var item = items.elementAt(index);
|
|
return ChatTile(data: item, disableContextActions: true);
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget buildSuggestions(BuildContext context) => buildResults(context);
|
|
}
|