Trigu Flutter SDK

SDK Flutter interno para exibir campanhas APP criadas no painel Trigu.

O SDK usa a API publica existente com platform=flutter, renderiza apenas os layouts mobile do MVP e registra eventos de runtime.

Instalação local

Adicione o pacote via path enquanto ele ainda nao estiver publicado:

dependencies:
  trigu:
    path: ../packages/flutter-sdk

Depois rode:

flutter pub get

Uso

import 'package:flutter/material.dart';
import 'package:trigu/trigu.dart';

void main() {
  runApp(const DemoApp());
}

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

  @override
  Widget build(BuildContext context) {
    return InappBannerProvider(
      config: InappBannerConfig(
        projectKey: 'pk_demo_project',
        apiUrl: 'https://app.trigu.com.br',
        userId: 'user_123',
        currentRoute: 'HomeScreen',
        traits: {'role': 'admin', 'plan': 'pro'},
        companyId: 'company_123',
        companyTraits: {'plan': 'enterprise'},
        debug: true,
        onLinkPress: (url) async {
          // Retorne false para abrir com url_launcher.
          return false;
        },
      ),
      child: MaterialApp(
        home: Stack(
          children: const [
            HomeScreen(),
            InappBannerHost(),
          ],
        ),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    final banner = InappBanner.of(context);
    return ElevatedButton(
      onPressed: () => banner.track('created_project'),
      child: const Text('Track event'),
    );
  }
}

API

  • InappBannerProvider: guarda o estado do SDK e inicia a busca por campanhas.
  • InappBannerHost: renderiza a campanha elegivel atual. Coloque dentro de um Stack acima da tela do app.
  • InappBanner.of(context): retorna o controller com identify, group, track, reload e reset.

Suporte do MVP

Layouts:

  • modal
  • bottom_banner

Modelos:

  • image: usa imageMobileUrl e torna a imagem inteira clicavel quando houver buttonUrl.
  • blocks: suporta texto, imagem, botao, espacador e divisor.

Blocos desconhecidos ou ainda nao suportados sao ignorados em modo debug sem quebrar o app.

Libraries

trigu