getAvailability method
Current state of the native model, with a reason when it is not ready.
Implementation
@override
Future<OnDeviceAiAvailability> getAvailability() async {
final raw = await _rawAvailability();
switch (raw) {
case 'available':
return const OnDeviceAiAvailability(
status: ModelFeatureStatus.available,
reason: AvailabilityReason.ready,
message: 'Chrome built-in AI (Gemini Nano) is ready.',
);
case 'downloadable':
return const OnDeviceAiAvailability(
status: ModelFeatureStatus.downloadable,
reason: AvailabilityReason.modelNotReady,
message:
'The browser can download its built-in model. Call '
'ensureReady() from a click or tap.',
);
case 'downloading':
return const OnDeviceAiAvailability(
status: ModelFeatureStatus.downloading,
reason: AvailabilityReason.modelNotReady,
message: 'The browser is downloading its built-in model.',
);
case 'missing':
return const OnDeviceAiAvailability(
status: ModelFeatureStatus.unavailable,
reason: AvailabilityReason.browserUnsupported,
message:
'This browser does not expose the Prompt API. Use desktop '
'Chrome or Edge with the built-in AI enabled.',
);
default:
return const OnDeviceAiAvailability(
status: ModelFeatureStatus.unavailable,
reason: AvailabilityReason.deviceNotEligible,
message:
'The browser reports its built-in model as unavailable '
'(unsupported hardware, too little disk space or disabled).',
);
}
}