getAvailability method

  1. @override
Future<OnDeviceAiAvailability> getAvailability()
override

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).',
      );
  }
}