AppIntentControlConfiguration
The description of a control that uses a custom app intent to provide user-configurable options.
Declaration
@MainActor @preconcurrency struct AppIntentControlConfiguration<Configuration, Content> where Configuration : ControlConfigurationIntent, Content : ControlWidgetTemplateOverview
The following example shows the configuration for a door opener control able to open a door specified by the user.
struct DoorOpener: ControlWidget {
var body: some ControlWidgetConfiguration {
AppIntentControlConfiguration(
kind: "com.yourcompany.GarageDoorOpener",
provider: DoorValueProvider()
) { door in
ControlWidgetToggle(
door.name,
isOn: door.isOpen,
action: ToggleDoor(door)
) {
Label(
$0 ? "Open" : "Closed",
systemImage: $0 ? "door.open" : "door.closed"
)
}
}
}
}Every control has a unique kind, a string that you choose. You use this string to identify your control when reloading its template with ControlCenter.
The value provider is an object that determines a value to use to render your template. This provider receives an intent containing user-editable parameters.
The content closure defines the template that WidgetKit needs to render the control. If you create the configuration using a value provider, when WidgetKit invokes the content closure, it passes a value created by the provider’s AppIntentControlValueProvider/previewValue property or AppIntentControlValueProvider/currentValue() function.