blob: 811f7ffed869cd128f4d2f20cef1580e175ad331 [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 'src/messages.g.dart';
export 'package:quick_actions_platform_interface/types/types.dart';
late QuickActionHandler _handler;
/// An implementation of [QuickActionsPlatform] for Android.
class QuickActionsAndroid extends QuickActionsPlatform {
/// Creates a new plugin implementation instance.
QuickActionsAndroid({
@visibleForTesting AndroidQuickActionsApi? api,
}) : _hostApi = api ?? AndroidQuickActionsApi();
final AndroidQuickActionsApi _hostApi;
/// Registers this class as the default instance of [QuickActionsPlatform].
static void registerWith() {
QuickActionsPlatform.instance = QuickActionsAndroid();
}
@override
Future<void> initialize(QuickActionHandler handler) async {
final _QuickActionHandlerApi quickActionsHandlerApi =
_QuickActionHandlerApi();
AndroidQuickActionsFlutterApi.setup(quickActionsHandlerApi);
_handler = handler;
final String? action = await _hostApi.getLaunchAction();
if (action != null) {
_handler(action);
}
}
@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 AndroidQuickActionsFlutterApi {
@override
void launchAction(String action) {
_handler(action);
}
}