A animação de navegação está piscando, exibindo brevemente uma tela preta ao navegar de volta em um aplicativo Shell.
Navegue de volta.
Não pisque.
Cintilando.
Vídeo em câmera lenta sobre o problema: https://i.imgur.com/bWAVzgY.mp4
Uma solução temporária, se você substituir, sem animação não há cintilação!
protected override bool OnBackButtonPressed()
{Current.Navigation.PopAsync(false); return true;}
Ei @ z07713! Obrigado por relatar e adicionar o vídeo, bem como uma solução alternativa! Bom trabalho 😄
Você por acaso também seria capaz de montar um pequeno projeto de reprodução para descartar que isso seja causado por qualquer outro código além de simplesmente navegar?
Além disso, você tentou fazer isso no iOS e viu a mesma coisa? Ou não tentou no iOS?
Obrigado!
Ei @ z07713! Obrigado por relatar e adicionar o vídeo, bem como uma solução alternativa! Bom trabalho 😄
Você por acaso também seria capaz de montar um pequeno projeto de reprodução para descartar que isso seja causado por qualquer outro código além de simplesmente navegar?
Além disso, você tentou fazer isso no iOS e viu a mesma coisa? Ou não tentou no iOS?
Obrigado!
Olá @jfversluis , obrigado pela resposta, aqui está a reprodução que você pediu: https://drive.google.com/open?id=1WkGh6QwTOP380gX4RrRsksSGBoJNWeuc
Além disso, não tentei fazer isso no IOS nem tenho a capacidade para fazer isso, não tenho um Mac.
Incrível, obrigado @ z07713 !
Definitivamente, vejo isso acontecendo, obrigado pela reprodução.
Pode ser interessante notar que a solução alternativa
protected override bool OnBackButtonPressed() {Current.Navigation.PopAsync(false); return true;}
Só funciona quando aplicado dentro do código por trás do AppShell.xaml e não funciona quando colocado em páginas separadas. Eu acho que isso se relaciona com 7072
Como área de trabalho, substituir OnPopAsync
de ShellSection
para desativar a animação pode ser mais direcionado.
public class CustomShellSection : ShellSection
{
protected override Task<Page> OnPopAsync(bool animated)
{
return base.OnPopAsync(false); // ignore the parameter
}
}
@jfversluis para mim isso parece estar funcionando corretamente no iOS (13.3).
Desativar a animação não é uma opção para nós e estávamos apenas finalizando nosso lançamento. Teremos que reverter para 4.3, o que é ruim, pois irá reabrir alguns bugs principalmente no shell e no carrossel.
Provavelmente teremos que desabilitar alguns recursos e lançar sem eles, o que é triste, dado o tempo que trabalhamos neles.
Existe alguma solução alternativa além de desativar a animação?
Alguma chance disso ser resolvido antes de 16 de janeiro? Seria fantástico. Obrigado.
Observe, a animação PopModal não tem o problema.
Lamento ouvir isso @jonx. Mesmo que o consertássemos antes de 16 de janeiro, é improvável que faça parte de um NuGet que lançaremos antes disso. Se isso é algo que bloqueia sua liberação, eu não apostaria nessa opção. Me desculpe por isso.
Está tudo bem @jfversluis , eu entendo, obrigado pelo seu comentário. Só teremos que atrasar nosso lançamento.
@ z07713 existe uma maneira de você compartilhar sua amostra novamente, não consigo mais acessar seus links. Eu gostaria de ver se é realmente o mesmo problema que eu tenho, porque para mim, posso ver brevemente outra tela do meu aplicativo em vez de uma tela preta (é no contexto de um assistente; quando eu abro a página atual, Eu vejo a primeira página do meu assistente brevemente). Obrigado.
@jfversluis , você teria uma idéia de qual mudança no 4.4 introduziu esse problema? Gostaria de ver se há uma maneira de contornar temporariamente o problema. Obrigado.
Fiz o downgrade para 4.3.991250 e ainda tenho o problema, apenas um pouco menos óbvio (porque é mais rápido - mais rápido, suponho). Farei mais testes se @ z07713 puder compartilhar seu exemplo ...
@jonx aí está: https://drive.google.com/open?id=19apVlQS0TafFeBT16aCfzvtvCwcweVgS
além disso, tem 4.3.0.991211 Forms instalado: /
Eu tambem tenho esse problema. Eu tentei colocar a linha:
override protegido bool OnBackButtonPressed () {Current.Navigation.PopAsync (false); return true; }
em meu appShell.xaml.cs e o Flashing ainda está presente. Se alguém pudesse me ajudar a entender o trabalho ao redor ... Isso seria incrível!
Nós temos o mesmo problema também, é muito chato, se você quiser usar o shell com animações. : |
Eu também tenho o mesmo problema, e também a solução alternativa não funcionou para mim. Recebi o feedback dos usuários de que isso parece muito desagradável, então teremos que atrasar o lançamento de nosso aplicativo até que isso seja corrigido.
quando o erro será corrigido?
Estou enfrentando o mesmo problema no Windows UWP ao navegar para a página de conteúdo usando Navigation.PushAsyc(<Page Object>,false)
Alguma solução alternativa para isso?
@jfversluis alguma atualização sobre isso?
@ z07713 Infelizmente ainda não, desculpe! Por acaso você descobriu alguma descoberta nova sobre isso que possa nos ajudar?
Portanto, a equipe do Xamarin permite que um problema oscilante que destrói absolutamente a UX fique no repositório por meses. Isso é uma loucura para mim. Atualmente estou enfrentando esse problema e me arrependo de não ter me tornado um nativo, pois estou tendo dor de cabeça ao navegar em meu próprio aplicativo.
@jfversluis Eu fiz alguns testes, espero que isso ajude vocês a encontrar o bug:
Para a reprodução, usei o modelo padrão do Visual Studio que usa o Xamarin Forms 4.3.0.908675
Eu não fiz alterações no código. Sem oscilações no aplicativo de modelo padrão.
Depois disso, eu atualizei o pacote Xamarin Forms para 4.3.0.947036
Sem alterações no código. A cintilação não aparece no emulador, apenas em um dispositivo Android real (no meu caso Samsung Galaxy A40), também não aparece no simulador iOS ou iPhone 8.
Portanto, deve haver uma mudança entre essas duas versões que causa a oscilação.
Impressionante! @AndreasLichtsinn
@jfversluis A única coisa que vale a pena mencionar é que paramos completamente de usar o shell por causa disso: /
Obrigado por sua investigação sobre este @AndreasLichtsinn! Informações muito valiosas :)
Mais uma coisa que descobri sobre o problema do piscar.
Quando eu crio um aplicativo Shell com o modelo, se eu alterar a navegação (no código por trás da ItemsPage) de "Navigation.PushAsync (new ItemDetailPage ())" para "Shell.Current.GoToAsync (" itemDetailPage ", false) ", então verei piscar no dispositivo Android. Eu verifiquei isso no 4.3.xxx original e nas versões 4.5.xxx mais recentes do Xamarin.Forms.
Para ser realmente honesto, embora haja alguns problemas de navegação do Shell (como a única navegação de página a página, o passo de parâmetro etc ...), este bug está bloqueando meu lançamento, e fará com que o Shell seja completamente inutilizável. Portanto, corrija o bug o mais rápido possível !!!
Bom dia, estou com os mesmos problemas descritos acima. Gostaria de saber se existe alguma solução à vista?
Mesmos problemas aqui. Não vejo como uma solução alternativa para desativar a animação, especialmente porque não há uma maneira fácil de fazer isso com o botão Voltar.
Espero que isso seja corrigido rapidamente!
Posso confirmar que não há piscar na versão 4.3.0.90867.
Não testei a versão acima, no entanto, o problema ainda persiste na versão 4.5.0.356
O problema ainda persiste na última versão estável.
Mesmos problemas aqui. Não vejo como uma solução alternativa para desativar a animação, especialmente porque não há uma maneira fácil de fazer isso com o botão Voltar.
Espero que isso seja corrigido rapidamente!
@kevinjpetersen isso só acontecerá se você for capaz de consertar o mais
seu melhor rápido! A correção é testar as descobertas do 4.3.0.90867.
Mais algumas informações: o bug é introduzido neste commit: https://github.com/xamarin/Xamarin.Forms/commit/2b4ccdc88f8db7a2a0b78a1adf3428125eb677b5
Parece que se eu comentar esta linha:
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499
então não há piscar.
Alguém poderia investigar isso se tivesse mais experiência do que eu ...
Eu depurei isso e se primeiro remover a página e, em seguida, chamar a navegação, tudo ficará bem - sem piscar.
Portanto, aqui: https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L600
Mude isso:
_navigationRequested?.Invoke(this, args);
if (args.Task != null)
await args.Task;
RemovePage(page);
para isso:
RemovePage(page);
_navigationRequested?.Invoke(this, args);
if (args.Task != null)
await args.Task;
@tdamir achado muito bom!
Considerando que sua descoberta é precisa args.Task
é esperado, provavelmente causado por mudança de contexto de UI-Thread-UI.
A tarefa é sempre esperada
mesmo que no Android o args.Task
neste método seja sempre um Task.FromResult(...)
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L134
mas acho que encontrei o culpado mais provável
https://github.com/xamarin/Xamarin.Forms/blob/7a52542d50797ccc69ae1d8dd84259190d96bdb4/Xamarin.Forms.Platform.Android/Renderers/ShellItemRendererBase.cs#L252 -L259
está mudando a cor de fundo durante a navegação (nem sempre)! porque?
Parece também que o piscar ocorre apenas quando dentro de uma guia.
Muitos testes a fazer.
Excelente trabalho @tdamir e @ahmedalejo! :)
@ahmedalejo Cool fidings! Só quero colocar isso aí, acho que não são apenas guias. Tenho a mesma cintilação e tudo o que tenho é isso no meu AppShell (também conhecido como no TabBar):
<?xml version="1.0" encoding="UTF-8"?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:MyApp.Views"
mc:Ignorable="d"
Title="MyApp"
Visual="Material"
Shell.BackgroundColor="{StaticResource JFBlack}"
Shell.TitleColor="{StaticResource JFWhite}"
Shell.ForegroundColor="{StaticResource JFWhite}"
FlyoutBehavior="Disabled"
Shell.TabBarIsVisible="False"
x:Class="MyApp.AppShell">
<ShellContent Route="login">
<views:LoginPage />
</ShellContent>
<ShellContent Route="overview">
<views:OverviewPage />
</ShellContent>
</Shell>
@ahmedalejo Sim, a parte da mudança de cor é estranha, mas se eu removê-la, ela ainda pisca.
Parece que https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499 deve ser chamado antes de navegar.
Olá @PureWeen e @rmarinho
você teria uma ideia por que chamar SendAppearanceChange()
abaixo
https://github.com/xamarin/Xamarin.Forms/blob/1532d46f5fb6f219594015b80f8e5a2476512882/Xamarin.Forms.Core/Shell/ShellSection.cs#L499
faz com que o pop pisque?
Alguém poderia aconselhar sobre uma solução alternativa?
A solução com
protected override bool OnBackButtonPressed()
{
Current.Navigation.PopAsync(false); return true;
}
não está funcionando.
Eu encontrei a solução alternativa (graças a https://github.com/xamarin/Xamarin.Forms/issues/8581#issuecomment-569583965)
public class CustomTab : Tab
{
protected override Task<Page> OnPopAsync(bool animated)
{
// temporary workaround while https://github.com/xamarin/Xamarin.Forms/issues/8581 not fixed
return base.OnPopAsync(animated: false);
}
}
Em seguida, use o CustomTab em XAML.
A correção abaixo só funciona com a navegação do botão Voltar do hardware (e não funciona em outros casos de navegação traseira):
protected override bool OnBackButtonPressed()
{
Current.Navigation.PopAsync(false); return true;
}
Obrigado @pfedotovsky, tive um palpite de que também pode ter a ver com a navegação por guias.
Acontece conosco também, desde 4.3 a cintilação existe no Android.
Acabei de descobrir que esse bug está no aniversário de um ano de navegação [Shell] - piscando # 5755
O mesmo problema aqui quando goback, tela piscando.
Por exemplo:
https://github.com/mallibone/ShellLoginSample
Obrigado pela exploração, @ahmedalejo, isso tornou este super fácil de rastrear e consertar
Assim que a construção estiver concluída, se alguém quiser testar os nugets e me avisar se o problema for resolvido, isso seria útil
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
Eu testei o nuget com a amostra xaminals
https://github.com/xamarin/Xamarin.Forms/issues/6294
E com esta pepita a oscilação não ocorre mais
@PureWeen Ok, então fiz um teste:
Eu criei um novo aplicativo de amostra de Shell com Xamarin Forms 4.3.0.908675 -> Sem cintilação
Então eu atualizei para o mais recente estável 4.5.0.495 -> Piscando
Então eu atualizei para a sua versão mais recente 4.6.0.1693 -> Sem cintilação
Ótimo trabalho! Espero que outros possam confirmar isso.
@PureWeen Ok, então fiz um teste:
Eu criei um novo aplicativo de amostra de Shell com Xamarin Forms 4.3.0.908675 -> Sem cintilação
Então eu atualizei para o mais recente estável 4.5.0.495 -> Piscando
Então eu atualizei para a sua versão mais recente 4.6.0.1693 -> Sem cintilaçãoÓtimo trabalho! Espero que outros possam confirmar isso.
@AndreasLichtsinn não consegue encontrar o Formulários Xamarin 4.6.0.1693
@PureWeen Ok, então fiz um teste:
Eu criei um novo aplicativo de amostra de Shell com Xamarin Forms 4.3.0.908675 -> Sem cintilação
Então eu atualizei para o mais recente estável 4.5.0.495 -> Piscando
Então eu atualizei para a sua versão mais recente 4.6.0.1693 -> Sem cintilaçãoÓtimo trabalho! Espero que outros possam confirmar isso.
@AndreasLichtsinn também não consigo encontrar a versão 1693! Além disso, o 4.7.0.531 noturno ainda pisca: /
@angelru @RsZoli Está nos artefatos publicados que PureWeen postou
@angelru Obrigado por testar !!!!
@angelru Obrigado por testar !!!!
@PureWeen não consegui testar, não consigo baixar
Oh, você estava citando @AndreasLichtsinn :-)
Obrigado @AndreasLichtsinn pelo teste !!!
@angelru
Vá para o link:
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
Clique aqui:
Então aqui:
Em seguida, descompacte o zip e crie uma fonte de pacote nuget local para esta pasta:
Em seguida, escolha esta fonte de pacote local e instale-a a partir daí:
@angelru
Vá para o link:
https://dev.azure.com/xamarin/public/_build/results?buildId=16155&view=results
Clique aqui:
Então aqui:
Em seguida, descompacte o zip e crie uma fonte de pacote nuget local para esta pasta:
Em seguida, escolha esta fonte de pacote local e instale-a a partir daí:
Muito obrigado!!! funciona!
Posso confirmar que não há oscilação no Xamarin Forms 4.6.0.1693.
Obrigado!
fechado por # 10158
Tenho o mesmo problema com os formulários 4.8 do Xamarin mais recentes. Identifiquei que no iOS as páginas que possuem rótulos com TextType = 'Html' causam o problema ...
Eu abri uma nova edição. # 12385
Comentários muito úteis
Eu testei o nuget com a amostra xaminals
https://github.com/xamarin/Xamarin.Forms/issues/6294
E com esta pepita a oscilação não ocorre mais