-
-
Notifications
You must be signed in to change notification settings - Fork 458
Expand file tree
/
Copy pathpreset_messages.dart
More file actions
55 lines (48 loc) · 1.61 KB
/
Copy pathpreset_messages.dart
File metadata and controls
55 lines (48 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:lichess_mobile/src/model/common/id.dart';
import 'package:lichess_mobile/src/model/game/message_presets.dart';
import 'package:lichess_mobile/src/widgets/buttons.dart';
class PresetMessages extends ConsumerWidget {
final GameFullId gameId;
final List<PresetMessage> alreadySaid;
final PresetMessageGroup? presetMessageGroup;
final Map<PresetMessageGroup, List<PresetMessage>> presetMessages;
final void Function(PresetMessage presetMessage) sendChatPreset;
const PresetMessages({
required this.gameId,
required this.alreadySaid,
required this.presetMessageGroup,
required this.presetMessages,
required this.sendChatPreset,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
final messages = presetMessages[presetMessageGroup] ?? [];
if (messages.isEmpty || alreadySaid.length >= 2) {
return const SizedBox.shrink();
}
final notAlreadySaid =
messages.where((message) => !alreadySaid.contains(message));
return Row(
children: notAlreadySaid
.map((preset) => _renderPresetMessageButton(preset, ref))
.toList(),
);
}
Widget _renderPresetMessageButton(PresetMessage preset, WidgetRef ref) {
return Padding(
padding: const EdgeInsets.all(4.0),
child: SecondaryButton(
semanticsLabel: preset.label,
onPressed: () {
sendChatPreset(preset);
},
child: Text(
preset.label,
textAlign: TextAlign.center,
),
),
);
}
}