getAssessment method
Implementation
@override
Future<Assessment> getAssessment({List<String>? trustedInstallers}) async {
_log.info("Güvenlik denetimi isteniyor...");
// 1. Cache kontrolü
if (_lastAssessment != null &&
DateTime.now().difference(_lastAssessment!.timestamp) <
_cacheDuration) {
_log.info(
"Sonuç önbellekten (cache) döndürülüyor. Süre: $_cacheDuration",
);
_handleThreat(_lastAssessment!);
return _lastAssessment!;
}
_log.info("Yeni güvenlik denetimi başlatılıyor...");
try {
final resultsMap = await methodChannel.invokeMapMethod<String, bool>(
'getSecurityAssessment',
{'trustedInstallers': trustedInstallers},
);
// 2. Daha iyi hata fırlatma
if (resultsMap == null) {
throw PlatformException(
code: 'NULL_RESULT',
message: 'Native assessment result is null.',
);
}
final result = SecurityResult.fromJson(resultsMap);
_log.fine("Native sonuçlar: $result");
final threatLevel = _calculateThreatLevel(result);
_log.info("Hesaplanan Tehdit Seviyesi: $threatLevel");
final assessment = Assessment(result, threatLevel);
_lastAssessment = assessment; // Sonucu cache'le
_handleThreat(assessment);
return assessment;
} on PlatformException catch (e, stacktrace) {
_log.severe("Platform hatası!", e, stacktrace);
final result = SecurityResult(isTampered: true, isDebugged: true);
final assessment = Assessment(result, _calculateThreatLevel(result));
_handleThreat(assessment);
return assessment;
}
}