testAppBlockerAction function

Future<void> testAppBlockerAction()

🧪 Custom Action: Teste completo de bloqueio de aplicativos

Para FlutterFlow: Use para testar e debugar o sistema de bloqueio de aplicativos no seu projeto.

Exemplo de uso no FlutterFlow:

  1. Ação personalizada: testAppBlockerAction
  2. Sem parâmetros
  3. Resultado: void (apenas logs)

O que faz:

  1. Lista apps instalados
  2. Seleciona um app de teste
  3. Inicia bloqueio
  4. Verifica configuração
  5. Para bloqueio

Logs: Verifique o console para resultados detalhados

Implementation

Future<void> testAppBlockerAction() async {
  print(
      '🧪 [APP_BLOCKER_TEST] ========== TESTE DE BLOQUEIO DE APPS ==========');

  try {
    // 1. Obter lista de apps instalados
    print('🧪 [APP_BLOCKER_TEST] 1. Obtendo lista de apps...');
    final apps = await StopouBlocker.getInstalledApps();
    print('🧪 [APP_BLOCKER_TEST] ✅ Encontrados ${apps.length} apps');

    // 2. Verificar permissão de acessibilidade
    print('🧪 [APP_BLOCKER_TEST] 2. Verificando permissões...');
    final hasPermission = await StopouBlocker.hasAccessibilityPermission();
    print(
        '🧪 [APP_BLOCKER_TEST] Permissão acessibilidade: ${hasPermission ? "✅" : "❌"}');

    if (!hasPermission) {
      print('🧪 [APP_BLOCKER_TEST] ⚠️ Teste limitado - permissão necessária');
      return;
    }

    // 3. Selecionar app de teste (procura por um comum)
    final testPackages = [
      'com.android.chrome',
      'com.google.android.youtube',
      'com.whatsapp'
    ];
    String? testPackage;

    for (final pkg in testPackages) {
      if (apps.any((app) => app['packageName'] == pkg)) {
        testPackage = pkg;
        break;
      }
    }

    if (testPackage == null && apps.isNotEmpty) {
      // Pega qualquer app disponível
      testPackage = apps.first['packageName'] as String;
    }

    if (testPackage == null) {
      print('🧪 [APP_BLOCKER_TEST] ❌ Nenhum app encontrado para teste');
      return;
    }

    print('🧪 [APP_BLOCKER_TEST] 3. App selecionado para teste: $testPackage');

    // 4. Testar bloqueio
    print('🧪 [APP_BLOCKER_TEST] 4. Iniciando bloqueio...');
    final startResult = await StopouBlocker.startAppBlocker([testPackage]);
    print('🧪 [APP_BLOCKER_TEST] Início: ${startResult ? "✅" : "❌"}');

    // 5. Aguardar um pouco
    print('🧪 [APP_BLOCKER_TEST] 5. Aguardando 2 segundos...');
    await Future.delayed(Duration(seconds: 2));

    // 6. Parar bloqueio
    print('🧪 [APP_BLOCKER_TEST] 6. Parando bloqueio...');
    final stopResult = await StopouBlocker.stopAppBlocker();
    print('🧪 [APP_BLOCKER_TEST] Parada: ${stopResult ? "✅" : "❌"}');

    // 7. Resultado final
    if (startResult && stopResult) {
      print('🧪 [APP_BLOCKER_TEST] ✅ TESTE CONCLUÍDO COM SUCESSO!');
      print('🧪 [APP_BLOCKER_TEST] 💡 Sistema de bloqueio funcionando');
      print(
          '🧪 [APP_BLOCKER_TEST] 🎯 Tente abrir $testPackage para testar o bloqueio');
    } else {
      print('🧪 [APP_BLOCKER_TEST] ❌ TESTE FALHOU');
      print('🧪 [APP_BLOCKER_TEST] Início: $startResult, Parada: $stopResult');
    }
  } catch (e) {
    print('🧪 [APP_BLOCKER_TEST] ❌ Erro no teste: $e');
  }

  print('🧪 [APP_BLOCKER_TEST] ==========================================');
}