waas_sdk 1.0.1
waas_sdk: ^1.0.1 copied to clipboard
Flutter WebView com bridge WaaS para integrar a experiência WaaS (Wealth as a Service) em aplicativos nativos iOS e Android.
waas_sdk #
SDK Flutter para integrar a experiência WaaS (Wealth as a Service) da Warren em aplicativos iOS e Android via WebView com bridge nativo.
Instalação #
dependencies:
waas_sdk: ^1.0.0
Quick Start #
import 'package:waas_sdk/waas_sdk.dart';
// Abra a experiência WaaS passando o token de acesso e o tenant
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => SafeArea(
bottom: false,
child: WaasView(
token: accessToken, // JWT obtido via /authenticate
tenant: 'seu-tenant', // Identificador do tenant
),
),
),
);
Autenticação #
O SDK espera um access token JWT obtido via client_credentials no endpoint de autenticação WaaS. O token é injetado automaticamente na WebView — o app host é responsável apenas por obtê-lo e passá-lo ao WaasView.
// Exemplo simplificado de obtenção do token
final response = await http.post(
Uri.parse('https://api.waas.warren.com.br/authenticate'),
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: 'grant_type=client_credentials&client_id=$clientId&client_secret=$clientSecret',
);
final accessToken = jsonDecode(response.body)['access_token'];
API #
WaasView #
Widget principal do SDK. Renderiza a experiência WaaS dentro de uma WebView gerenciada.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
token |
String |
Sim | JWT de acesso obtido via autenticação WaaS. |
tenant |
String |
Sim | Slug do tenant (ex: sample, plenapay). |
loadingPageBackgroundColor |
Color? |
Não | Cor de fundo do overlay de carregamento. |
loaderWidget |
Widget? |
Não | Widget customizado exibido durante o loading. |
WaaSChannel #
Bridge de comunicação entre a WebView e o app nativo.
injectToken(String token)— Injeta o token na WebView e dispara o eventotokenReady.injectBridgeScript()— Inicializa os listeners de mensagens na WebView.
WaaSMessageHandler #
Handler de mensagens recebidas da WebView via bridge. Processa comandos como closeWebView (fecha a tela e retorna ao app host).
extractFormattedClientId(String? token) #
Utilitário que extrai e formata o client_id do payload JWT (ex: banco-rendimento.zion → bancorendimento).
Bridge — Protocolo de Mensagens #
A comunicação entre a WebView e o app nativo segue o protocolo request/response:
// Request (WebView → App)
{
"id": "uuid",
"type": "request",
"method": "closeWebView",
"meta": { "tenantId": "sample", "bridgeVersion": "1.0.0" }
}
// Response (App → WebView)
{
"id": "uuid",
"origin": "sdk",
"type": "response",
"result": { "ok": true },
"meta": { "bridgeVersion": "1.0.0", "tenantId": "sample" }
}
Métodos suportados #
| Método | Descrição |
|---|---|
closeWebView |
Fecha a WebView e retorna ao app host via Navigator.pop(). |
Exemplo completo #
O app samples/waas_playground demonstra a integração completa:
samples/waas_playground/
├── .env # WAAS_CLIENT_ID e WAAS_CLIENT_SECRET
├── lib/
│ ├── main.dart # Entry point — abre WaasView ao clicar no FAB
│ ├── controllers/
│ │ └── waas_playground_controller.dart
│ └── services/
│ ├── waas_access_token_service.dart # Chamada HTTP ao /authenticate
│ └── waas_access_token_manager.dart # Cache e refresh do token
Para rodar:
cd samples/waas_playground
cp .env.example .env # configure WAAS_CLIENT_ID e WAAS_CLIENT_SECRET
flutter run
Plataformas #
| Plataforma | Suporte |
|---|---|
| Android | ✅ |
| iOS | ✅ |
| Web | ❌ (usa dart:io) |
Requisitos #
- Flutter SDK
>=3.0.0 <4.0.0 webview_flutter: ^4.13.0
Licença #
MIT — Copyright (c) 2025 Warren Brasil