app_entry.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'dart:typed_data';
  2. import 'slot_assignment.dart';
  3. /// A launchable activity returned by the platform.
  4. class AppEntry {
  5. const AppEntry({
  6. required this.packageName,
  7. required this.activityName,
  8. required this.label,
  9. this.icon,
  10. });
  11. final String packageName;
  12. final String activityName;
  13. final String label;
  14. final Uint8List? icon;
  15. String get componentId => '$packageName/$activityName';
  16. factory AppEntry.fromMap(Map<dynamic, dynamic> map) {
  17. final rawIcon = map['icon'];
  18. final icon = rawIcon is Uint8List
  19. ? rawIcon
  20. : rawIcon is List<int>
  21. ? Uint8List.fromList(rawIcon)
  22. : rawIcon is List
  23. ? Uint8List.fromList(rawIcon.whereType<int>().toList())
  24. : null;
  25. return AppEntry(
  26. packageName: (map['package'] as String?) ?? '',
  27. activityName: (map['activity'] as String?) ?? '',
  28. label: ((map['label'] as String?) ?? '').trim(),
  29. icon: icon,
  30. );
  31. }
  32. SlotAssignment toAssignment() => SlotAssignment(
  33. packageName: packageName,
  34. activityName: activityName,
  35. label: label,
  36. );
  37. bool matches(SlotAssignment assignment) {
  38. return assignment.packageName == packageName &&
  39. assignment.activityName == activityName;
  40. }
  41. }