簡體   English   中英

Xamarin.Forms Plugin.Media GetStream / Dispose不存在

[英]Xamarin.Forms Plugin.Media GetStream/Dispose does not exist

我嘗試實現一個照片選擇器來從iOS / Android上的Library / Gallery獲取照片,因此我將Plugin.Media與Xamarin.Forms一起使用。

我用了這個: https : //github.com/jamesmontemagno/MediaPlugin

問題在於函數GetStream()和Dispose()不存在,以下是確切的錯誤消息:

錯誤 :“任務”不包含“ GetStream”的定義,找不到可以接受類型為“任務”類型的第一個參數的擴展方法“ GetStream”(是否缺少using指令或程序集引用?)

錯誤 :“任務”不包含“處置”的定義,找不到可以接受類型為“任務”類型的第一個參數的擴展方法“處置”(您是否缺少using指令或程序集引用?)

addphotos.Clicked = new Command(() => { 
    if (CrossMedia.Current.IsPickPhotoSupported)
    {
        if (!CrossMedia.Current.IsPickPhotoSupported)
        {
            DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
            return;
        }
        var file = CrossMedia.Current.PickPhotoAsync();

        if (file == null)
            return;

        image.Source = ImageSource.FromStream(() =>
        {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
        });
    }
});

您需要使lambda異步並等待對CrossMedia.Current.PickPhotoAsync的異步調用:

addphotos.Clicked = new Command(async () => { 
    if (CrossMedia.Current.IsPickPhotoSupported)
    {
        if (!CrossMedia.Current.IsPickPhotoSupported)
        {
            DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
            return;
        }
        var file = await CrossMedia.Current.PickPhotoAsync();

        if (file == null)
            return;

        image.Source = ImageSource.FromStream(() =>
        {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
        });
    }
});

PickPhotoAsync()是一個異步方法,因此它返回一個Task,但是如果您等待它,它將返回您要查找的值。 如果您不熟悉異步並等待,請查看Microsoft指南,網址為:

https://msdn.microsoft.com/zh-CN/library/mt674882.aspx?f=255&MSPPError=-2147217396

顧名思義,PickPhotoAsync()是一個異步函數,因此您在調用它時需要使用await。

// file will be a Task<MediaFile>
var file = CrossMedia.Current.PickPhotoAsync();

// file will be a MediaFile
var file = await CrossMedia.Current.PickPhotoAsync();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM