initialize static method

Future<void> initialize({
  1. required String apiKey,
  2. String? platform,
  3. String category = 'default',
})

Initialize VulnGuard and check version on every app start

Implementation

static Future<void> initialize({
  required String apiKey,
  String? platform, // Made optional - will auto-detect
  String category = 'default',
}) async {
  final vulnguard = Vulnguard.instance;
  if (vulnguard._isInitialized) return;

  try {
    vulnguard._apiKey = apiKey;
    vulnguard._platform = platform ?? _detectPlatform();
    vulnguard._category = category;

    // Initialize storage first
    await vulnguard._storage.initialize();

    // Check version and sync if needed
    await vulnguard._checkVersionAndSync();

    // Get installed apps using cross-platform service
    List<UniversalAppInfo> installedPackages = await CrossPlatformAppService
        .instance
        .getInstalledApps();
    List<PackageInfo> storedPackages = await vulnguard._storage
        .getAllPackages();

    // Clear previous vulnerable apps
    _vulnerableApps.clear();

    for (UniversalAppInfo installedApp in installedPackages) {
      for (PackageInfo storedPackage in storedPackages) {
        if (installedApp.packageName == storedPackage.packageName) {
          debugPrint('Vulnerable package found: ${installedApp.packageName}');

          // Add to vulnerable apps list
          _vulnerableApps.add(
            VulnerableApp(
              packageName: storedPackage.packageName,
              appName: storedPackage.appName,
              iconUrl: storedPackage.iconUrl,
            ),
          );
          break;
        }
      }
    }

    vulnguard._isInitialized = true;
  } catch (e) {
    debugPrint('VulnGuard initialization error: $e');
    vulnguard._isInitialized = true;
  }
}