app_intents_annotations 0.1.0 copy "app_intents_annotations: ^0.1.0" to clipboard
app_intents_annotations: ^0.1.0 copied to clipboard

Annotations for defining iOS App Intents in Flutter. Use with app_intents and app_intents_codegen.

app_intents_annotations #

pub package License: MIT

Annotations for defining iOS App Intents in Flutter. Use with app_intents and app_intents_codegen to generate Swift code for Siri, Shortcuts, and Spotlight integration.

Features #

  • @IntentSpec - Define App Intents with parameters
  • @IntentParam - Define intent parameters with titles and options
  • @EntitySpec - Define App Entities for parameter pickers
  • @EntityId, @EntityTitle, @EntitySubtitle, @EntityImage - Entity property annotations
  • @AppShortcut, @AppShortcutsProvider - Define App Shortcuts for Spotlight

Installation #

dependencies:
  app_intents: ^0.1.0
  app_intents_annotations: ^0.1.0

dev_dependencies:
  app_intents_codegen: ^0.1.0
  build_runner: ^2.4.0

Usage #

Defining an Intent #

import 'package:app_intents_annotations/app_intents_annotations.dart';

@IntentSpec(
  identifier: 'com.example.CreateTaskIntent',
  title: 'Create Task',
  description: 'Create a new task',
)
class CreateTaskIntentSpec extends IntentSpecBase<CreateTaskInput, Task> {
  @IntentParam(title: 'Title')
  final String title;

  @IntentParam(title: 'Due Date', isOptional: true)
  final DateTime? dueDate;

  CreateTaskIntentSpec({required this.title, this.dueDate});
}

Defining an Entity #

@EntitySpec(
  identifier: 'com.example.TaskEntity',
  title: 'Task',
  pluralTitle: 'Tasks',
)
class TaskEntitySpec extends EntitySpecBase<Task> {
  @EntityId()
  String id(Task task) => task.id;

  @EntityTitle()
  String title(Task task) => task.title;

  @EntitySubtitle()
  String? subtitle(Task task) => task.description;

  @EntityImage(type: EntityImageType.systemName)
  String? image(Task task) => 'checkmark.circle';
}

Defining App Shortcuts #

@AppShortcutsProvider()
class TaskShortcutsProvider {
  @AppShortcut(
    intent: CreateTaskIntentSpec,
    phrases: [
      'Create a task in \${applicationName}',
      'Add task to \${applicationName}',
    ],
  )
  static final createTask = AppShortcutDefinition();
}

Annotations Reference #

Annotation Description
@IntentSpec Marks a class as an App Intent definition
@IntentParam Marks a field as an intent parameter
@EntitySpec Marks a class as an App Entity definition
@EntityId Marks a method as returning the entity ID
@EntityTitle Marks a method as returning the entity title
@EntitySubtitle Marks a method as returning the entity subtitle
@EntityImage Marks a method as returning the entity image
@EntityDefaultQuery Marks a method as the default query provider
@AppShortcut Defines a shortcut phrase for an intent
@AppShortcutsProvider Marks a class as providing app shortcuts

License #

MIT License - see the LICENSE file for details.

0
likes
160
points
110
downloads

Publisher

unverified uploader

Weekly Downloads

Annotations for defining iOS App Intents in Flutter. Use with app_intents and app_intents_codegen.

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

MIT (license)

More

Packages that depend on app_intents_annotations