43 lines
1.3 KiB
Dart
43 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:timetrack/features/projects/domain/project.dart';
|
|
import 'package:timetrack/features/timer/presentation/widgets/project_picker_sheet.dart';
|
|
|
|
class ProjectPickerChip extends StatelessWidget {
|
|
const ProjectPickerChip({
|
|
super.key,
|
|
required this.project,
|
|
required this.onChanged,
|
|
this.enabled = true,
|
|
});
|
|
|
|
final Project? project;
|
|
final ValueChanged<Project?> onChanged;
|
|
final bool enabled;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final colorScheme = Theme.of(context).colorScheme;
|
|
final hasProject = project != null;
|
|
|
|
return ActionChip(
|
|
key: const Key('project_picker_chip'),
|
|
avatar: hasProject
|
|
? CircleAvatar(
|
|
backgroundColor: Color(project!.colorValue),
|
|
radius: 10,
|
|
)
|
|
: Icon(Icons.folder_outlined, size: 18, color: colorScheme.onSurfaceVariant),
|
|
label: Text(hasProject ? project!.name : 'Select project'),
|
|
onPressed: enabled
|
|
? () async {
|
|
final selected = await ProjectPickerSheet.show(context);
|
|
if (selected != null) onChanged(selected);
|
|
}
|
|
: null,
|
|
backgroundColor: hasProject
|
|
? colorScheme.secondaryContainer
|
|
: colorScheme.surfaceContainerHighest,
|
|
);
|
|
}
|
|
}
|