setNetworkCallback static method

Future<void> setNetworkCallback(
  1. bool onNetworkDataProcess(
    1. Object requestUrl,
    2. Object inData,
    3. Object inOutSize,
    4. Object outData,
    )
)

设置网络数据回调。 requestUrl 数据归属的URL inData 输入数据buffer inOutSize 输入输出数据buffer大小,单位字节 outData 输出数据buffer,处理后的数据可写入这里,大小必须与inOutSize一样,其内存由sdk内部申请,无需管理内存

Implementation

static Future<void> setNetworkCallback(
    bool Function(Object requestUrl, Object inData, Object inOutSize,
            Object outData)
        onNetworkDataProcess) async {
  const BasicMessageChannel<String> _basicMessageChannel =
      BasicMessageChannel<String>(
    "onNetworkDataProcess",
    StringCodec(),
  );
  // 注册调用 Flutter 端的 callback,并发送至 Native 端
  _basicMessageChannel.setMessageHandler((message) async {
    if (message != null) {
      Map<String, dynamic> parsedArguments = jsonDecode(message);
      Object requestUrl = parsedArguments["param1"];
      Object inData = parsedArguments["param2"];
      Object inOutSize = parsedArguments["param3"];
      Object outData = parsedArguments["param4"];

      // 调用 onNetworkDataProcess,并确保返回值是 bool 类型
      bool result =
          onNetworkDataProcess(requestUrl, inData, inOutSize, outData);

      // 返回结果给 Native
      return result.toString(); // 返回布尔值给 Native
    }

    // 默认返回 false,如果 message 为 null
    return "false";
  });

  try {
    await methodChannel.invokeMethod('setNetworkCallback');
  } on PlatformException catch (e) {
    print("Failed to register callback: '${e.message}'.");
  }
}