blob: ee2cfda304e137601e17c8f9961db2984a62f0b2 [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 'dart:convert';
import 'dart:ui';
/// Util method to replicate the behavior of a `MethodChannel` in the Flutter
/// framework.
void sendJsonMethodCall({
required PlatformDispatcher dispatcher,
required String channel,
required String method,
dynamic arguments,
PlatformMessageResponseCallback? callback,
}) {
sendJsonMessage(
dispatcher: dispatcher,
channel: channel,
json: <String, dynamic>{
'method': method,
'args': arguments,
},
);
}
/// Send a JSON message over a channel.
void sendJsonMessage({
required PlatformDispatcher dispatcher,
required String channel,
required Map<String, dynamic> json,
PlatformMessageResponseCallback? callback,
}) {
dispatcher.sendPlatformMessage(
channel,
// This recreates a combination of OptionalMethodChannel, JSONMethodCodec,
// and _DefaultBinaryMessenger in the framework.
utf8.encode(
const JsonCodec().encode(json)
).buffer.asByteData(),
callback,
);
}