import 'dart:typed_data'; import 'slot_assignment.dart'; /// A launchable activity returned by the platform. class AppEntry { const AppEntry({ required this.packageName, required this.activityName, required this.label, this.icon, this.isSystemApp = false, }); final String packageName; final String activityName; final String label; final Uint8List? icon; final bool isSystemApp; String get componentId => '$packageName/$activityName'; factory AppEntry.fromMap(Map map) { final rawIcon = map['icon']; final icon = rawIcon is Uint8List ? rawIcon : rawIcon is List ? Uint8List.fromList(rawIcon) : rawIcon is List ? Uint8List.fromList(rawIcon.whereType().toList()) : null; return AppEntry( packageName: (map['package'] as String?) ?? '', activityName: (map['activity'] as String?) ?? '', label: ((map['label'] as String?) ?? '').trim(), icon: icon, isSystemApp: map['system'] == true, ); } SlotAssignment toAssignment() => SlotAssignment( packageName: packageName, activityName: activityName, label: label, ); bool matches(SlotAssignment assignment) { return assignment.packageName == packageName && assignment.activityName == activityName; } }