liquid_analytics_ui

DX helpers for liquid_analytics:

  • GoRouter screen tracking
  • Consent banner / sheet widgets
  • In-app event inspector + DevTools timeline events

Install

dependencies:
  liquid_analytics: ^0.1.1
  liquid_analytics_ui: ^0.1.1
  go_router: ^17.0.0   # if you use GoRouter helpers

GoRouter

final liquid = Liquid(sinks: [...], ...);
await liquid.init();

// Option A — route names (GoRoute.name)
final router = GoRouter(
  observers: [LiquidGoRouterObserver(liquid)],
  routes: [
    GoRoute(path: '/', name: 'home', builder: ...),
    GoRoute(path: '/cart', name: 'cart', builder: ...),
  ],
);

// Option B — full matched path (/product/42)
final binding = LiquidGoRouterBinding(liquid, router)..attach();
Stack(
  children: [
    child,
    Align(
      alignment: Alignment.bottomCenter,
      child: LiquidConsentBanner(
        controller: liquid.consent,
        onAccept: () => liquid.consent.grant(ConsentCategory.analytics),
        onReject: () => liquid.consent.deny(ConsentCategory.analytics),
      ),
    ),
  ],
);

// Granular categories:
await showLiquidConsentSheet(
  context: context,
  controller: liquid.consent,
);

Event inspector

final recording = RecordingSink();
final liquid = Liquid(
  sinks: [recording, /* production sinks */],
  consent: ConsentPolicy.allowAll,
);

// Overlay in debug builds:
if (kDebugMode)
  LiquidInspector(controller: recording.controller);

RecordingSink also posts Liquid.Message events via dart:developer so they appear on the DevTools timeline in debug/profile builds.

Libraries

liquid_analytics_ui
DX widgets and helpers for liquid_analytics.