blob: 235591774c5b15a244bc26d0a86c2d4a18d25d7b [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/foundation.dart';
import 'package:quick_actions_platform_interface/quick_actions_platform_interface.dart';
import 'messages.g.dart';
export 'package:quick_actions_platform_interface/types/types.dart';
late QuickActionHandler _handler;
/// An implementation of [QuickActionsPlatform] for iOS.
class QuickActionsIos extends QuickActionsPlatform {
/// Creates a new plugin implementation instance.
QuickActionsIos({
@visibleForTesting IOSQuickActionsApi? api,
}) : _hostApi = api ?? IOSQuickActionsApi();
final IOSQuickActionsApi _hostApi;
/// Registers this class as the default instance of [QuickActionsPlatform].
static void registerWith() {
QuickActionsPlatform.instance = QuickActionsIos();
}
@override
Future<void> initialize(QuickActionHandler handler) async {
final _QuickActionHandlerApi quickActionsHandlerApi =
_QuickActionHandlerApi();
IOSQuickActionsFlutterApi.setup(quickActionsHandlerApi);
_handler = handler;
}
@override
Future<void> setShortcutItems(List<ShortcutItem> items) async {
await _hostApi.setShortcutItems(
items.map(_shortcutItemToShortcutItemMessage).toList(),
);
}
@override
Future<void> clearShortcutItems() => _hostApi.clearShortcutItems();
ShortcutItemMessage _shortcutItemToShortcutItemMessage(ShortcutItem item) {
return ShortcutItemMessage(
type: item.type,
localizedTitle: item.localizedTitle,
icon: item.icon,
);
}
}
class _QuickActionHandlerApi extends IOSQuickActionsFlutterApi {
@override
void launchAction(String action) {
_handler(action);
}
}