app_deploy_screenshots 1.2.1
app_deploy_screenshots: ^1.2.1 copied to clipboard
Generates App Deployment Screenshots
1.2.1 #
- fix: a caption with emphasis warned once per unmarked line and once per image, so emphasising only the headline (the usual case) printed a warning for every subheadline on every device. It now warns only when no line of the caption is marked, once per caption. Reported by the Rubric app.
1.2.0 #
A whole store listing from one test: slides that aren't screenshots, layouts the top apps use, and output fastlane can upload as it is.
Everything written for 1.0 and 1.1 keeps working: the published 1.1.0+1 example test passes unchanged against this release.
Deprecations #
Each still works and is removed in 2.0; the IDE names its replacement.
MarketingFrame(layout: FrameLayout...): useslideLayout: SlideLayout.captionTop,.captionBottomor.bleed(...).FrameLayoutstays the 1.x enum, andMarketingFrame(bleed: FrameBleed(...))adds the new bleed layout beside it for 1.x-style code; both are deprecated.MarketingFrame(tilt:): useslideLayout: SlideLayout.bleed(angle: ...).MarketingFrame(bezel:, screenCornerRadius:, shadow:): usedevice: DeviceStyle(...).forStores(root:): useoutput: OutputLayout.folders(root).encodeOpaquePng,TestAssetBundleandAppDeployScreenshots.packageLibFromConfig: no longer needed.initialize(mockPlatformChannels:)staystrueby default, and becomesfalsein 2.0. Pass it explicitly to be unaffected.
Output changes, for anyone comparing against 1.1 images: package text (captions, callouts, status bars) and the app's own Roboto text draw at real font weights; Android status bars show 9:30 unless time: is set (iOS stays 9:41); bezels are about a third thinner (1.1 drew them at the wrong scale); captions in right-to-left locales lay out right to left unless textDirection: is set.
Slides that aren't screenshots #
- feat:
StoreListingwrites a whole listing slide by slide: devices, variants, output, design, status bar and pumps are set once, each slide is numbered in the order it is added, and a slide passes just its caption words, styled like the shared caption (Caption.styledLikedoes the same for the static methods) - feat:
widgetForStores/listing.widgetrender any widget as a full slide at every store size, in the variant's theme, locale and direction, without touching the app under test - feat:
posterForStores/listing.poster: a slide with no device, made of a background, caption and decorations - feat:
captureScreensandDeviceMockupput captured screens inside a device as a widget, for two phones side by side or a before/after pair - feat:
panoramaForStores/listing.panoramadraw one widget across several consecutive slides - feat:
MarketingFrame.decorations: images and widgets placed on the canvas, behind or in front of the device
Layouts and devices #
- feat:
SlideLayout.bleedruns the device off the bottom edge, optionally tilted (MarketingFrame(slideLayout:)) - feat:
DeviceStylegroups how the device is drawn: bezel, Dynamic Island, notch or punch-hole cutout, side buttons, outline, glow, a real shadow, cropping (ScreenCrop.belowStatusBar,.safeArea) and a fade-out, with.screenOnly()and.detailed()presets - feat:
FrameBackground.image(blur:, tint:)andFrameBackground.screen(), the app's own screen enlarged and blurred behind the device - feat:
Device.playStoreWear,playStoreChromebookandplayStorePhoneTallpresets, andDevice.type
Captions and annotations #
- feat:
Caption.emphasisstyles text between**markers**(CaptionEmphasis.color,.style,.markerhighlighter and.gradient); markers survive translation files - feat:
Caption.footnotefor small print - feat:
Liftraises a widget off the screen, larger and with a shadow - feat: bundled Roboto weights (OFL), loaded from the package and never added to apps, so
fontWeightrenders as real Light to Black in captions, widget slides and the app's own Roboto text
Output #
- feat:
OutputLayout.fastlane()writes wherefastlane deliverandsupplyupload from: each store's locale folder name (jaandja-JP,heandiw-IL), supply's phone, tablet, TV and Wear folders, and errors before capturing for anything the store would reject - feat: the manifest records each slide's
source(app, widget or poster)
Fixes #
- fix: captions and callouts follow the locale's text direction; they were always left to right
- fix: bezels were drawn at the canvas scale instead of the screen's, about a third too thick
- fix: captions rendered every weight as regular; they now use real Roboto weights
1.1.0+1 #
- docs: rewrite the README around store artwork, with rendered examples of every feature, accurate store requirements and a type-checked snippet for each API
- docs: add
example/, a chat app whose screenshot test uses every feature
1.1.0 #
- fix:
byDevicespassesdeviceSetupthrough tobyDevice, which now runs it inside that device's overrides - fix: images are waited for per device, after the pumps, and painted before capture. Previously images laid out again at a new device size (list tiles,
ResizeImage) were captured blank - fix:
Device.safeAreais in logical points and is scaled bydevicePixelRatiowhen applied. Previously apps saw about a ninth of the real inset (6.6pt instead of 59pt on iPhone), and the built-in insets now match the real devices - feat:
byDevicetakesdeviceSetupandapplyDeviceOverrides - feat: store-size presets
Device.appStore(iPhone 6.9" 1320×2868, iPad 13" 2064×2752) andDevice.playStore(phone 1080×1920, 7" 1224×2176, 10" 1620×2880), plusAppDeployScreenshots.forStores - feat: every screenshot is written as a 24-bit PNG with no alpha, as the stores require
- feat:
StatusBarOverlaydraws a clean iOS or Android status bar, coloured from the app'sSystemUiOverlayStyle - feat:
MarketingFramecomposites the screenshot onto store artwork with a background, a caption, rounded corners and an optional bezel, incaptionTop,captionBottomandtiltedlayouts;ScreenshotFrame.buildervaries it per locale, brightness or device - feat: annotations placed by
Finder:Spotlight,CalloutandMagnifierInset - feat:
ScreenshotVariantrenders light, dark and locales in one call, with suffixed file names - feat:
orderadds a store-order prefix (01_home.png) - feat:
AppDeployScreenshots.writeReportwritesmanifest.jsonand one contact sheet per device, and warns about Google Play screenshots whose caption covers more than 20% of the image - feat: a bundled monochrome emoji font,
AppDeployScreenshots.emojiFontFamily, loaded byinitialize()and never bundled into apps - feat:
byDevice,byDevicesandbyPlatformreturnScreenshotRecords - fix: captures draw real elevation shadows instead of flutter_test's solid black outlines
- fix: after a brightness change, chained theme animations finish before capture, even with a fixed
customPump - fix: a
finderbelow the root is captured at the device pixel ratio, not at 1× - fix:
Device.meetsPlayStoreRequirementschecks pixel size and Play's 2:1 aspect limit
1.0.1 #
- fix: pass all args through from
byPlatformtobyDevices
1.0.0 #
- feat: Initial Release