app_entry.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. this.isSystemApp = false,
  11. });
  12. final String packageName;
  13. final String activityName;
  14. final String label;
  15. final Uint8List? icon;
  16. final bool isSystemApp;
  17. String get componentId => '$packageName/$activityName';
  18. factory AppEntry.fromMap(Map<dynamic, dynamic> map) {
  19. final rawIcon = map['icon'];
  20. final icon = rawIcon is Uint8List
  21. ? rawIcon
  22. : rawIcon is List<int>
  23. ? Uint8List.fromList(rawIcon)
  24. : rawIcon is List
  25. ? Uint8List.fromList(rawIcon.whereType<int>().toList())
  26. : null;
  27. return AppEntry(
  28. packageName: (map['package'] as String?) ?? '',
  29. activityName: (map['activity'] as String?) ?? '',
  30. label: ((map['label'] as String?) ?? '').trim(),
  31. icon: icon,
  32. isSystemApp: map['system'] == true,
  33. );
  34. }
  35. SlotAssignment toAssignment() => SlotAssignment(
  36. packageName: packageName,
  37. activityName: activityName,
  38. label: label,
  39. );
  40. bool matches(SlotAssignment assignment) {
  41. return assignment.packageName == packageName &&
  42. assignment.activityName == activityName;
  43. }
  44. }