---
title: Jornadas do Usuário
canonical: https://developer.unico.io/pt-BR/developers/sdks-and-tools/flutter/capture-flow/user-journeys
locale: pt-BR
generated_by: markdown-export
---

- [/pt-BR/](/pt-BR/)
- [SDKs e Ferramentas](/pt-BR/developers/sdks-and-tools/overview)
- [Flutter SDK](/pt-BR/developers/sdks-and-tools/flutter/requirements)
- Fluxo de captura
- Jornadas do Usuário

# Jornadas do Usuário

As Jornadas do Usuário são sessões de captura em múltiplas etapas orquestradas pelo SDK em conjunto com o fluxo configurado. Por exemplo, o fluxo `idchecktrustdocssign` executa selfie + documento + assinatura em uma única sessão.

ProdutosAs jornadas disponíveis dependem do fluxo configurado para a sua integração. Consulte [Produtos](/pt-BR/products) para o mapeamento completo de produto → fluxo → capacidade.

Como funciona
O plugin delega para os SDKs nativos subjacentes:

1. O plugin abre a câmera (Android ou iOS) com a sobreposição SmartFrame.
2. O SDK nativo orquestra a sequência de capturas necessárias para o fluxo (selfie, documento, assinatura).
3. O SDK encaminha internamente os resultados para a Unico — o cliente nunca recebe ou gerencia dados de imagem diretamente.
4. Retorna um objeto `SuccessResult` com um `processId` via platform channel.

A orquestração é tratada inteiramente pelo SDK — você não precisa implementar a sequência de etapas no seu código Dart.

Modo de câmera (captura inteligente)
O SDK tem **enquadramento inteligente** e **captura automática** habilitados por padrão. Configure o modo de câmera no seu builder da seguinte forma:

```
UnicoCheckCameraOpener _opener = new UnicoCheck(this)**    .setAutoCapture(autoCapture: true)    .setSmartFrame(smartFrame: true)    .build();
```

Iniciando uma Jornada do Usuário
**Passo 1** — Implementar `UnicoListener``UnicoListener` trata os callbacks do ciclo de vida do SDK. Implemente os quatro métodos obrigatórios:MétodoQuando é chamado`onErrorUnico(error)`Ocorreu um erro durante a operação do SDK`onUserClosedCameraManually()`O usuário fechou a câmera manualmente`onSystemClosedCameraTimeoutSession()`O limite de 40 segundos da sessão foi atingido`onSystemChangedTypeCameraTimeoutFaceInference()`Nenhum rosto detectado por 13 segundos — muda para captura manual```
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {  late UnicoCheckBuilder _unicoCheck;  @override  void onErrorUnico(UnicoError error) {}  @override  void onUserClosedCameraManually() {}  @override  void onSystemClosedCameraTimeoutSession() {}  @override  void onSystemChangedTypeCameraTimeoutFaceInference() {}}
```

Métodos de listener obrigatóriosTodos os quatro métodos de listener acima devem ser criados no seu projeto (mesmo sem nenhuma lógica). Caso contrário, o projeto não compilará com sucesso.
**Passo 2** — Implemente os listeners da jornada no `UnicoSelfie`Adicione os callbacks da jornada à sua classe de estado:MétodoDescrição`onSuccess(SuccessResult result)`Captura realizada com sucesso — retorna `SuccessResult` com `processId` (a Unico processa a imagem internamente)`onErrorSelfie(UnicoError error)`Captura falhou — retorna um `UnicoError` com código e descriçãoSem dados de imagemAo contrário do fluxo Liveness, o callback da Jornada do Usuário **não** retorna `base64` ou `encrypted`. A Unico trata o processamento da imagem internamente e retorna apenas um `processId`.```
@overridevoid onSuccess(SuccessResult result) {  debugPrint('processId: ${result.processId}');}@overridevoid onErrorSelfie(UnicoError error) { }
```

**Passo 3** — Chame `openCameraSelfie`O método `openCameraSelfie` abre a câmera. Para Jornadas do Usuário, passe o `webAppToken` fornecido pela Unico em vez de um arquivo JSON de credenciais:```
_opener.openCameraSelfie(  listener: this,  webAppToken: token,);
```

Coleta de dados de monitoramento
O método `openCameraSelfie` fornece uma sobrecarga que aceita metadados via `UnicoCheckPrepareInfo` para auxiliar na identificação da sessão do usuário e do fluxo:

`externalUserId` (String, **obrigatório**) — Identificador do usuário no seu sistema. Automaticamente submetido a hash SHA-256 antes da transmissão.
`useCase` (String, opcional) — Identificador do contexto ou fluxo em execução. Transmitido em texto plano.

```
_opener.openCameraSelfie(  listener: this,  webAppToken: token,  prepareInfo: UnicoCheckPrepareInfo(    externalUserId: 'external_user_id',    useCase: 'use_case', // opcional  ),);
```

Para o tratamento completo do resultado, consulte [Recebendo o resultado](/pt-BR/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).Última atualização em 8 de out. de 2026**