# Flutter Smartface Plugin - Guia de Integração

## 📱 Sobre o Plugin

Este é um plugin Flutter para reconhecimento facial usando o SDK Smartface da Vísica AI Solutions.

## 🛠️ Como Integrar em Seu Projeto

### 1. Adicionar Dependência

#### Opção A: Via Caminho Local
```yaml
dependencies:
  flutter_smartface:
    path: /caminho/para/este/plugin
```

#### Opção B: Via Git
```yaml
dependencies:
  flutter_smartface:
    git:
      url: https://seu-repositorio.git
      ref: main
```

### 2. Configuração Android

#### 2.1. Criar pasta libs
```bash
mkdir android/libs
```

#### 2.2. Copiar biblioteca AAR
Copie o arquivo `libs/sfacemobile-v5.12.2_202507041140.aar` para `android/libs/` do seu projeto e renomeie para:
```
br.com.visica.flutter.smartfacemobile-sfacemobile-release.aar
```

#### 2.3. Configurar android/build.gradle
Adicione no arquivo `android/build.gradle`:

```gradle
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

project(':flutter_smartface') {
    ext.libsDir = rootProject.file('libs')
}
```

#### 2.4. Configurar android/app/build.gradle
Certifique-se de ter:

```gradle
android {
    compileSdkVersion 35
    ndkVersion flutter.ndkVersion

    defaultConfig {
        minSdkVersion 24
        targetSdkVersion flutter.targetSdkVersion
    }
}
```

#### 2.5. Configurar ProGuard (android/app/proguard-rules.pro)
```proguard
-keepclassmembers class br.com.visica.sface.** {
  *;
}
```

### 3. Configuração iOS

#### 3.1. Atualizar ios/Podfile
```ruby
platform :ios, '12.0'
```

#### 3.2. Instalar pods
```bash
cd ios && pod install
```

### 4. Permissões

#### Android (android/app/src/main/AndroidManifest.xml)
```xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
```

#### iOS (ios/Runner/Info.plist)
```xml
<key>NSCameraUsageDescription</key>
<string>Este app precisa acessar a câmera para reconhecimento facial</string>
```

## 🚀 Como Usar

### 1. Importar o Plugin
```dart
import 'package:flutter_smartface/flutter_smartface_mobile.dart';
```

### 2. Configurar Credenciais
```dart
final plugin = FlutterSmartfaceMobilePlatform();

// Configurar credenciais da API
await plugin.setCredentials(
  user: 'seu_usuario',
  password: 'sua_senha',
  clientIdentifier: 123456,
);
```

### 3. Widget de Identificação
```dart
plugin.identifyWidget(
  onIdentify: (result) {
    print('Identificação: $result');
  },
  customPermissionBuilder: (requestPermission) =>
    ElevatedButton(
      onPressed: () => requestPermission(context),
      child: Text('Permitir Câmera'),
    ),
  onLoadingWidget: Center(child: CircularProgressIndicator()),
  faceMaskOverlay: Container(/* seu overlay personalizado */),
  builder: (cameraWidget, controller) => Stack(
    children: [
      cameraWidget,
      // Seus widgets customizados
    ],
  ),
)
```

### 4. Widget de Enrollment (Cadastro)
```dart
plugin.enrollWidget(
  withGlasses: false,
  onPercentageChanged: (percentage) {
    print('Progresso: $percentage%');
  },
  onCompleted: (result) {
    print('Cadastro concluído: $result');
  },
  onFailed: (error) {
    print('Erro no cadastro: $error');
  },
  // ... outros parâmetros
)
```

### 5. Detecção de Vivacidade
```dart
plugin.livenessWidget(
  onLiveness: (isLive) {
    print('Pessoa real: $isLive');
  },
  livenessThreshold: 0.5,
  // ... outros parâmetros
)
```

## 🔧 Métodos Disponíveis

### Configuração
- `setCredentials()` - Configurar credenciais da API
- `addGroupKeyA()` / `addGroupKeyB()` - Adicionar chaves de grupo
- `setThreshold()` - Definir limite de segurança

### Operações
- `identify()` - Identificar pessoa
- `enrollPrepare()` - Preparar cadastro
- `fetchUsers()` - Buscar usuários
- `removeUser()` - Remover usuário
- `getThreshold()` - Obter limite atual

### Armazenamento Seguro
- `setValueToSecureStorage()` - Salvar valor seguro
- `getValueFromSecureStorage()` - Obter valor seguro

## 📋 Requisitos

- Flutter >= 3.3.0
- Dart >= 3.1.5
- Android minSdkVersion 24
- iOS 12.0+

## 🏗️ Compilar o Projeto de Exemplo

```bash
# Navegar para o exemplo
cd example/

# Instalar dependências
flutter pub get

# Executar no emulador
flutter run
```

## 🔍 Debugging

### Verificar configuração
```dart
bool isConfigured = await plugin.apiConfigured();
print('API configurada: $isConfigured');
```

### Logs nativos
O plugin gera logs detalhados. Use `adb logcat` (Android) ou Console.app (iOS) para debug.

## 📞 Suporte

Para obter credenciais e suporte técnico, contate a equipe da Vísica AI Solutions.
