我知道从Xamarin.Forms视图调用本机API的推荐方法是使用" Requested"创建一个事件。名称后缀,然后从Renderer
处理它。例如,ScrollTo
用于async
。
在我的情况下,我想调用一个原生API,它不仅返回数据,而且还 WebView
- 。
一个很好的例子是UWP InvokeScriptAsync
控件,它具有IAsyncOperation<string>
方法,该方法是异步的并返回delegate Task<string> InvokeScriptRequestedHandler();
event InvokeScriptRequestedHandler InvokeScriptRequested;
。
如果我直接遵循正常的建议,我可以提出一个代表:
public async Task<string> InvokeScriptAsync()
{
var handler = InvokeScriptRequested;
if (handler != null)
{
return await handler.Invoke();
}
return null;
}
并在Xamarin.Forms自定义视图中使用以下内容:
Task<string>
这实际上可以正常工作,但事件返回值已经很不寻常了,如果它是highlight
则更是如此。
是否有最佳做法如何处理此类情景?