liquid_analytics_ui 0.1.1 copy "liquid_analytics_ui: ^0.1.1" to clipboard
liquid_analytics_ui: ^0.1.1 copied to clipboard

DX widgets for liquid_analytics — consent banner kit, in-app event inspector, and GoRouter screen tracking.

example/main.dart

// DX widgets for liquid_analytics: a consent banner, an in-app event
// inspector, and GoRouter screen tracking.
import 'package:flutter/material.dart';
import 'package:liquid_analytics/liquid_analytics.dart';
import 'package:liquid_analytics_ui/liquid_analytics_ui.dart';

/// RecordingSink feeds the inspector (and the DevTools timeline in debug).
final RecordingSink recording = RecordingSink();

late final Liquid liquid;

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  liquid = Liquid(
    sinks: [recording, DebugSink()],
    consent: const ConsentPolicy(
      requireOptIn: true,
      map: {
        ConsentCategory.analytics: ['recording', 'debug'],
      },
    ),
  );
  await liquid.init();

  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // Automatic screen tracking. With GoRouter, use:
      //   GoRouter(observers: [LiquidGoRouterObserver(liquid)])
      navigatorObservers: [LiquidNavigatorObserver(liquid)],
      home: Scaffold(
        appBar: AppBar(title: const Text('liquid_analytics_ui')),
        body: Stack(
          children: [
            Center(
              child: ElevatedButton(
                onPressed: () => liquid.track('button_tapped', {'id': 'buy'}),
                child: const Text('Track an event'),
              ),
            ),

            // Floating panel listing recent messages, live.
            LiquidInspector(controller: recording.controller),

            // Hides itself once every listed category has a decision.
            Align(
              alignment: Alignment.bottomCenter,
              child: LiquidConsentBanner(
                controller: liquid.consent,
                onAccept: () => liquid.consent.grant(ConsentCategory.analytics),
                onReject: () => liquid.consent.deny(ConsentCategory.analytics),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
160
points
139
downloads

Documentation

API reference

Publisher

verified publisherketok.id

Weekly Downloads

DX widgets for liquid_analytics — consent banner kit, in-app event inspector, and GoRouter screen tracking.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#analytics #flutter #consent #ui

License

MIT (license)

Dependencies

flutter, go_router, liquid_analytics, meta

More

Packages that depend on liquid_analytics_ui