handleApiCall method
Implementation
Future<dynamic> handleApiCall(MethodCall call) async {
switch (call.method) {
case 'getNFCAvailability':
return window.navigator.hasProperty('usb'.toJS).toDart ? 'available' : 'not_supported';
case 'poll':
return await WebUsbDriver.listen(call.arguments["timeout"], call.arguments["probeWebUSBMagic"]);
case 'transceive':
var payload = call.arguments["data"];
if (payload is Uint8List) {
final hex = NfcToolkit.toHex(payload);
final response = await WebUsbDriver.exchange(hex);
return NfcToolkit.fromHex(response);
}
return await WebUsbDriver.exchange(payload as String);
case 'finish':
return await WebUsbDriver.halt(call.arguments["closeWebUSB"]);
case 'getDeviceInfo':
return {
'supported': window.navigator.hasProperty('usb'.toJS).toDart,
'enabled': window.navigator.hasProperty('usb'.toJS).toDart,
'manufacturer': 'WebBrowser',
'model': 'WebUSB-Adapter',
};
default:
throw PlatformException(code: "501", details: "Method ${call.method} not implemented for web");
}
}