Xamarin FFImageLoading.CachedImage не отображается в первый раз - PullRequest
0 голосов
/ 07 октября 2019

У меня возникли некоторые неполадки с FFImageLoading на xamarin, происходит следующее: изображение кажется отображаемым только тогда, когда страница перезагружается во второй раз (например, я покидаю страницу, затем нажимаю кнопку «назад»). Я уже пыталсяСначала загрузите эти изображения, прежде чем загружать ContentPage, но это не сработало. Я попытался ForceLayout, чтобы отобразить его, но он не сработал, хотя.

вот мой следующий код в представлении

<ListView.ItemTemplate>
<DataTemplate>
    <ViewCell Tapped="OnDetailsButtonClicked">
        <Frame
            Margin="2,2,2,2"
            Padding="5"
            BackgroundColor="White"
            IsClippedToBounds="True">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="20*" />
                    <ColumnDefinition Width="60*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>

                <ffimageloading:CachedImage
                    x:Name="profilePhoto"
                    Grid.Row="0"
                    Grid.Column="0"
                    Aspect="AspectFit"
                    HeightRequest="50"
                    HorizontalOptions="Center"
                    Source="{Binding CoworkerProfilePhoto}"
                    VerticalOptions="Center"
                    WidthRequest="50">
                    <ffimageloading:CachedImage.Transformations>
                        <fftransformations:CircleTransformation />
                    </ffimageloading:CachedImage.Transformations>
                </ffimageloading:CachedImage>

                ....

Как вы можете видеть, что файл выжидалПеременная CoworkerProfilePhoto в моем списке ожидания.

эти изображения сохраняются на устройстве и затем отображаются на экране, это простое сохранение файла

public async static Task SaveImagem(this byte[] imagem, String nomeArquivo, IFolder pastaRaiz = null)

{IFolder pasta = pastaRaiz ?? FileSystem.Current.LocalStorage;

IFile arquivo = await pasta.CreateFileAsync(nomeArquivo, CreationCollisionOption.ReplaceExisting);

using (System.IO.Stream stream = await arquivo.OpenAsync(FileAccess.ReadAndWrite))
{
    stream.Write(imagem, 0, imagem.Length);
}

}

Есть идеи? Я проверил эти две ссылки

https://github.com/luberda-molinet/FFImageLoading/issues/238

https://xamarin.github.io/bugzilla-archives/41/41087/bug.html

Это, похоже, связано, но ни одна из них не сработала тоже.

1 Ответ

1 голос
/ 08 октября 2019

Я нашел решение, которое сработало для меня правильно. Первая проблема заключалась в том, что я указывал только имя файла в своем свойстве CoworkerProfilePhoto

Как показано ниже

item.CoworkerProfilePhoto =  photo.Name;

, но это было невозможночтобы система нашла место хранения файла, мне пришлось передать абсолютный путь к файлу Uri.

Как показано ниже

var folder = PCLStorage.FileSystem.Current.LocalStorage.GetFolderAsync(myPath).Result;
item.CoworkerProfilePhoto = new Uri(folder.Path + "/" + photo.Name, UriKind.Absolute);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...