trigu 0.1.0
trigu: ^0.1.0 copied to clipboard
Solução de comunicação e engajamento in-app. Exiba banners customizados, anúncios e alertas diretamente no seu app.
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 umStackacima da tela do app.InappBanner.of(context): retorna o controller comidentify,group,track,reloadereset.
Suporte do MVP #
Layouts:
modalbottom_banner
Modelos:
image: usaimageMobileUrle torna a imagem inteira clicavel quando houverbuttonUrl.blocks: suporta texto, imagem, botao, espacador e divisor.
Blocos desconhecidos ou ainda nao suportados sao ignorados em modo debug sem quebrar o app.