setNetworkCallback static method
设置网络数据回调。 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}'.");
}
}