PackageTrack
Sign in Get early access

adflow_flutter

Flutter plugin for the AdFlow ad-mediation library on top of AdMob: Interstitial, App Open, Rewarded, Native, and Banner ads. Android only for now.

2.2.0 wzlibs/adflow

What this package is like to depend on

Last release 1 months ago

16 Jul 2026

Too new to tell

only 2 release windows

Nearly every release is documented

notes for 13 of 13 stable releases

Nothing withdrawn

no release was ever pulled

1 months old

15 releases · first in 2026

15 releases in the last 12 months

see the full history below

Release timeline

15 releases · Jul 2026 to Jul 2026
Release Pre-release

Releases

latest 15
  1. 2.2.0 16 Jul 2026
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v1.0.0-alpha05.
    • Added AdFlow.updateShowIntervalConfig() - lets the app change the minimum gap between Interstitial/App Open after AdFlow.initialize() has already run (e.g. when the value comes from the app's own remote config and changes after init). Takes effect immediately on the next canShow()/show() check; does not reset any cooldown already in progress.
    Open source →
  2. 2.1.0 15 Jul 2026
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v1.0.0-alpha04.
    • SDK init (MobileAds.initialize()) now depends only on consent (canRequestAds()), no longer waits for first-foreground - can run as early as Application.onCreate() if consent already resolved from a previous session.
    • Behavior change: preload = true no longer auto-loads a placement during AdFlow.initialize(). The first load() for Interstitial/Rewarded must now always be app-driven; Banner/Native are unaffected (still self-load when their view attaches). preload still governs auto-loading the next ad after the current one is consumed (show/release()) - that part is unchanged. autoShowOnForeground (App Open) is unaffected end-to-end - it now also triggers its own load() when not ready, so it keeps working with no app-side change.
    • Fix: FullScreenAd.awaitReady() (Interstitial/App Open/Rewarded) now triggers its own load() like the Dart-side contract already implied, instead of only waiting for an already-in-flight load. Previously, calling awaitReady() on a placement with preload = false (or before anything else had loaded it) would hang until timeout since nothing was requesting the ad.
    • Fix: a .load() call blocked by CONSENT_REQUIRED (e.g. called before the UMP form resolves) is no longer silently dropped - it's now retried automatically once consent is granted, instead of requiring the app to listen for onError/blocked callbacks and retry manually.
    Open source →
  3. 2.0.0 13 Jul 2026
    Release notes
    • Added AdFlowCollapsibleNative - shows a native ad with a close button that switches the same slot to a banner ad (also triggered automatically if the native ad fails to load), composing AdFlowNative/AdFlowBanner directly with no separate platform view.
    • BREAKING: removed the global AdFlow.setAdsEnabled(bool). Restored the v1 per-placement setEnabled(bool) instead, now on every ad handle (AdFlowInterstitialAd/AdFlowAppOpenAd/AdFlowRewardedAd/AdFlowBannerAd/AdFlowNativeAd) - toggling one placement no longer forces every other placement off too, e.g. a "premium" toggle can leave a rewarded placement showing while disabling everything else. No adflow-core change needed - both the old global flag and the new per-placement map work by feeding loadWhen/showWhen (already-existing native AdRule hooks), just scoped differently.
    • Added onLoading/onLoaded/onError to AdFlowNative/AdFlowBanner - side-effect callbacks (safe to call setState() inside them) that fire alongside the existing loading/failed widget builders, which run during Flutter's build phase and are not a safe place for side effects.
    • Bump the underlying adflow-core/adflow-admob dependency to v1.0.0-alpha03 (internal fix: AppOpenForegroundObserver now defers entirely to AppOpenAd.canShow instead of duplicating a subset of its checks - no API change).
    Open source →
  4. 1.0.0 13 Jul 2026
    Release notes
    • First stable release of the state-first rewrite (was published as 1.0.0-alpha.1/1.0.0-alpha.2 prereleases). No API change from 1.0.0-alpha.2 - see that entry below for what it added over 1.0.0-alpha.1.
    Open source →
  5. 1.0.0-alpha.2 13 Jul 2026 pre-release
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v1.0.0-alpha02.
    • Added canShow() to AdFlowInterstitialAd/AdFlowAppOpenAd/AdFlowRewardedAd - a synchronous, side-effect-free query for whether calling show() right now would actually proceed (accounts for showRule, the minimum interval between full-screen shows, and whether another full-screen ad is currently showing, in addition to whether the ad is loaded). Not available on Banner/Native
      • those ad types have no such gates on the native side either.
    Open source →
  6. 1.0.0-alpha.1 11 Jul 2026 pre-release
    Release notes
    • Breaking rewrite for AdFlow native v1.0.0-alpha01.
    • Declare all placements once through AdFlow.initialize; removed v1 manager creation and per-placement setEnabled APIs.
    • Added reactive AdState listenables, awaitReady, and unified full-screen show callbacks.
    • Added self-managing AdFlowBanner and AdFlowNative widgets. Polling, blocked flags, generation keys, and manual native view rebinding are no longer required.
    • Added global AdFlow.setAdsEnabled, state streaming through Pigeon, v2 block reasons, and v2 native renderer support.
    Open source →
  7. 0.5.0 09 Jul 2026
    Release notes

    RetryPolicy.DEFAULT retries indefinitely on no-fill instead of giving…

    Open source →
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v0.7.0. showRule on a Native/Banner placement now actually blocks rendering (previously ignored - only Interstitial/App Open/Rewarded honored it). Both the "not loaded yet" and "showRule rejected" cases now report through AdFlowNativeAdView.onShowBlocked/AdFlowBannerAdView.onShowBlocked instead of one of them throwing, so a showRule rejection after an ad was already cached can no longer crash the app.
    • AdFlowNativeAdView/AdFlowBannerAdView no longer need an isReady/readiness check before building the widget - call them directly and use onShowBlocked to hide/retry if blocked. See example/lib/home_screen.dart (_retryWhileBlocked) for the recommended pattern. No breaking API change - onShowBlocked is a new optional callback.
    Open source →
  8. 0.4.2 09 Jul 2026
    Release notes
    • Fix: setEnabled(false) only blocked show() for Interstitial/App Open/Rewarded, and had no effect at all on Banner/Native - load() kept fetching ads in the background for every ad type, and Banner/Native platform views kept rendering the cached ad regardless of setEnabled(). Now setEnabled(false) consistently blocks both load() and rendering for every ad type, so a fully "disabled" placement (e.g. a VIP/premium user) stops making ad requests entirely instead of just hiding the show/UI surface. No API change - same setEnabled(bool) call.
    Open source →
  9. 0.4.1 09 Jul 2026
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v0.6.0, which renders the native ad icon in DefaultSmallNativeAdRenderer (previously headline + body only, no image). No Dart API change.
    Open source →
  10. 0.3.2 08 Jul 2026
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v0.5.0, which makes the default retry policy retry indefinitely on no-fill instead of giving up after 5 attempts (backoff still caps at 60s/attempt). A placement no longer gets permanently stuck failed for the rest of the session just because the ad network no-filled a few times in a row. No Dart API change.
    Open source →
  11. 0.3.1 08 Jul 2026
    Release notes
    • Fix: show() on AdFlowInterstitialAd/AdFlowAppOpenAd/AdFlowRewardedAd could hang forever (the returned Future<void> never completing) when called with no Activity currently attached (e.g. a screen rotation or the app briefly backgrounded between load() finishing and show() being called), or when the placement had no underlying native manager registered. Both cases now report onShowBlocked(BlockReason.notReady) instead of silently doing nothing, so the awaited Future always resolves.
    Open source →
  12. 0.3.0 08 Jul 2026
    Release notes

    Rename default Logcat tag from AdFlow to AdFlowSDK

    Open source →
    Release notes
    • AdFlowNativeAd.reload(): force-fetch a new native ad even while the currently cached one is still within its expiry window (load() no-ops in that case). Bumps the underlying adflow-core/adflow-admob dependency to v0.4.0. Does not rebind any already-built AdFlowNativeAdView - recreate the widget (e.g. bump its Key) once reload() resolves successfully to pick up the new ad. If the reload fails, the previously cached ad is left in place. See README "Hiển thị từng loại ad" section for the recommended integration point (RouteAware.didPopNext()).
    Open source →
  13. 0.2.1 08 Jul 2026
    Release notes
    • Bump the underlying adflow-core/adflow-admob dependency to v0.3.0, which renames the default Logcat tag (was "AdFlow", clashed with the app's own package name in logcat output; now "AdFlowSDK"). No Dart API change.
    Open source →
  14. 0.2.0 07 Jul 2026
    Release notes
    • GDPR/consent support (Google UMP), exposed on AdFlowCore: getConsentStatus(), getPrivacyOptionsRequirement(), canRequestAds(), requestConsentIfNeeded(), showPrivacyOptionsForm(). requestConsentIfNeeded() accepts an optional debugGeography/ testDeviceHashedIds to test the EEA flow without rebuilding a native-only app.
    • No app-side change required for existing load() calls - they already respect consent automatically (see README).
    Open source →
  15. 0.1.0 07 Jul 2026
    Release notes

    Initial release. Android only - iOS not implemented yet.

    • Interstitial, App Open, Rewarded, Native, and Banner ad support, bridged to the underlying adflow-core/adflow-admob Kotlin libraries via Pigeon.
    • AdFlowCore.initialize() for one-time setup (show-interval config, revenue logging).
    • AdFlowInterstitialAd, AdFlowAppOpenAd, AdFlowRewardedAd, AdFlowBannerAd, AdFlowNativeAd facades, plus AdFlowBannerAdView/AdFlowNativeAdView widgets backed by AndroidView.
    • setEnabled() per placement as a runtime on/off switch (e.g. for premium/remove-ads users).
    • App Open auto-show on foreground via enableAutoShowOnForeground().
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive