enum ScreenshotDevicePlatform { android, ios } class ScreenshotDevice { final String name; final ScreenshotDevicePlatform platform; final ({int dx, int dy}) screenshotFrameOffset; const ScreenshotDevice({ required this.name, required this.platform, this.screenshotFrameOffset = (dx: 0, dy: 0), }); ScreenshotDevice.fromDisplayName({ required String displayName, required this.platform, this.screenshotFrameOffset = (dx: 0, dy: 0), }) : name = displayName.replaceAll(' ', '_').toLowerCase(); String get systemOverlayPathLight => 'screenshots/assets/system_overlays/${platform.name}/${name}_system_overlay_light.png'; String get systemOverlayPathDark => 'screenshots/assets/system_overlays/${platform.name}/${name}_system_overlay_dark.png'; String get deviceFramePath => 'screenshots/assets/frames/${platform.name}/${name}_frame.png'; } final screenshotDevices = { for (final d in _screenshotDevicesAndroid + _screenshotDevicesIos) d.name: d, }; final List _screenshotDevicesAndroid = [ ScreenshotDevice.fromDisplayName( displayName: 'Pixel 6', platform: ScreenshotDevicePlatform.android, screenshotFrameOffset: (dx: 67, dy: 66), ), ]; final List _screenshotDevicesIos = [ ScreenshotDevice.fromDisplayName( displayName: 'iPhone 8 Plus', platform: ScreenshotDevicePlatform.ios, ), ScreenshotDevice.fromDisplayName( displayName: 'iPhone 13 Pro', platform: ScreenshotDevicePlatform.ios, screenshotFrameOffset: (dx: 72, dy: 60), ), ];