MotorSignal-App/lib/features/social/widgets/avatar_selector.dart

53 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import '../../../services/social/rider_profile_models.dart';
import 'avatar_badge.dart';
/// Grid selector for choosing a preset rider avatar.
class AvatarSelector extends StatelessWidget {
final String? selectedPresetId;
final ValueChanged<String> onSelected;
const AvatarSelector({
super.key,
required this.selectedPresetId,
required this.onSelected,
});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'SELECT AVATAR PRESET',
style: TextStyle(
color: Colors.white70,
fontSize: 11,
fontWeight: FontWeight.w800,
letterSpacing: 0.8,
fontFamily: 'Inter',
),
),
const SizedBox(height: 10),
Wrap(
spacing: 12,
runSpacing: 12,
children: PresetAvatar.availablePresets.map((preset) {
final isSelected = (selectedPresetId ?? PresetAvatar.availablePresets.first.id) == preset.id;
return Tooltip(
message: preset.label,
child: AvatarBadge(
avatarPreset: preset.id,
displayName: preset.label,
radius: 22,
isSelected: isSelected,
onTap: () => onSelected(preset.id),
),
);
}).toList(),
),
],
);
}
}