navigationevent
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa | 
|---|---|---|---|---|
| 8 de outubro de 2025 | - | - | 1.0.0-beta01 | - | 
Declarar dependências
Para adicionar uma dependência a navigationevent, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Não há notas de versão para este artefato.
Versão 1.0
Versão 1.0.0-beta01
8 de outubro de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estes commits.
Mudanças na API
- Correção da anotação FloatRangeparaNavigationEvent.touchXeNavigationEvent.touchY. Esses valores representam coordenadas de pixel absolutas e não têm um limite superior de1.0. (I4b205, b/445989313).
- Refatore o elemento combinável NavigationEventDispatcherOwnerpararememberNavigationEventDispatcherOwner. Agora, a função retorna oNavigationEventDispatcherOwnerdiretamente. Para fornecer esse proprietário a uma subcomposição, useCompositionLocalProvider. (I874b2, b/444446629)
Versão 1.0.0-alpha09
24 de setembro de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.
Mudanças na API
- Use o objeto singleton NavigationEventTransitionState.Idlediretamente em vez de instanciarIdle(). (Ic7d9e, b/444734264).
- Torne os construtores de conveniência internos e receba instâncias usando NavigationEventDispatcher.historypúblico em vez de construção direta. (I3b7e0, b/444734264)
- É necessário criar NavigationEventStateusandorememberNavigationEventState. O construtor agora é interno. (Ie143c, b/444734264).
- Adote onBackCompletedFallback, substitua os usos defallbackOnBackPressede o parâmetro do construtor. O comportamento não muda. É invocado apenas em eventos de retorno concluídos e não processados. (Idabe9, b/444734264)
- O construtor principal de NavigationEventHistory(mergedHistory, currentIndex)agora éinternal. Os consumidores externos precisam usar os construtores públicos (o vazio ou o baseado em partição) para criar instâncias. (I1c047, b/444734264)
- Fazer com que View.setViewTreeNavigationEventDispatcherOwneraceite um proprietário anulável (Ic9eb6, b/444436762).
- NavigationEventInfoagora é um- abstract classem vez de um- interface. Atualize todas as implementações personalizadas para herdar da classe (por exemplo,- data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
- A propriedade NavigationEventDispatcher.statee a funçãogetState<T>()legadas foram removidas. Use os novos fluxos separadosdispatcher.transitionState(para o progresso do gesto) edispatcher.history(para a pilha de navegação). (Ic2ceb, b/444734264)
- O callback NavigationEventInput.onInfoChanged(...)é substituído. Implemente o novo callbackonHistoryChanged(history: NavigationEventHistory)para receber atualizações como um único objetoNavigationEventHistory. (I23e0b, b/444734264)
- Introduza um novo NavigationEventDispatcher.historyStateFlowglobal. Esse fluxo não genérico permite que os observadores se inscrevam apenas para receber mudanças na pilha de navegação e permanece estável durante o progresso do gesto. É a contrapartida detransitionState. (I1db10, b/444734264).
- Introduza um novo NavigationEventDispatcher.transitionStateStateFlowglobal. Esse fluxo não genérico permite que os observadores se inscrevam apenas no estado do gesto físico (Idle/InProgress), separado do histórico. (I171fa, b/444734264)
- Apresente a classe NavigationEventHistoryState. Essa será a API principal para observar o histórico de informações de navegação, separada do estado do gesto. (I81ca5, b/444734264)
- NavigationEventagora está marcado como- @Immutable, permitindo que o Compose Compiler otimize recomposições. (If78c7, b/444734264)
- As APIs de manipulador navigationevent-composeforam atualizadas.NavigationEventHandlereNavigationBackHandler(e variantes) agora são compatíveis com uma nova sobrecarga que aceitaNavigationEventStates içados. As sobrecargas simples (que usamcurrentInfo) são preservadas e agora usam esse novo modelo de estado internamente. (Ic3251, b/444734264)
- Adicione o novo @StableNavigationEventState<T>aonavigationevent-compose. Esse objeto combina o histórico local com o estado do gesto local e será o principal link entrerememberNavigationEventStateeNavigationEventHandler. (Ifb69f, b/444734264)
- Adicione uma nova propriedade transitionState: TransitionStatepública e somente leitura aNavigationEventHandler. Os manipuladores agora mantêm o próprio estado de transição, que pode ser observado por sistemas externos. (I9acd2, b/444734264)
- Apresente a nova classe sealed TransitionState. Essa será a API principal para observar o estado do gesto, separada do histórico de navegação. (Id4beb, b/444734264).
- Exponha currentInfo,backInfoeforwardInfocomo propriedades públicas somente leitura emNavigationEventHandler. (Ia7636, b/444734264)
- As implementações de NavigationEventHandleragora precisam fornecer um valorinitialInfo: Tao construtor de base. (Idcfea, b/444734264)
- Substitua OnBackInvokedInputporOnBackInvokedOverlayInputouOnBackInvokedDefaultInput. (I5323f, b/428948766)
- Marque NavigationEventStatecomo@Immutable. Isso melhora a performance do Compose, garantindo que os combináveis que observam esse estado possam pular a recomposição corretamente. (I399c8)
- Renomeie NavigationEventInfo.NotProvidedparaNavigationEventInfo.None;e atualize as referências. Nenhuma mudança de comportamento. (I5e2d4).
- NavigationEventInfoagora está marcado como- @Immutable, permitindo que o Compose Compiler otimize recomposições. (I7c112).
- Melhorar a ergonomia do Java com uma interface divertida para o fallback de conclusão de volta. (I8a860).
- onHasEnabledHandlerChangedfoi renomeado como- onHasEnabledHandlersChanged. Isso esclarece que o callback informa o estado de ativação coletiva de todos os manipuladores, não apenas um. (I1af61, b/443711297).
- Remova hasEnabledHandler()deNavigationEventDispatcher;e useNavigationEventInput.onHasEnabledHandlersChanged. (Idef72, b/443711297)
- Adicione o callback onInfoChangedaNavigationEventInputpara notificar os listeners sobre mudanças no histórico de navegação. Isso fornece o contexto completo das pilhas atuais, de volta e para frente, permitindo que as entradas reajam às informações contextuais. (I69a8b, b/443282983)
- Transformar o swipeEdgedoNavigationEventem um@IntDef(Icee54, b/443950342)
- Adicione um parâmetro priorityaNavigationEventDispatcher.addInputpara limitar um dispatcher a uma prioridade. Eventos comoonHasEnabledCallbacksChangedagora são acionados apenas quando os callbacks nessa prioridade mudam. (I3e488, b/443711297).
- Renomeie o parâmetro NavigationEventDispatcherdeparentDispatcherpara parent para maior clareza. (Id4f1f, b/443801782)
- Remoção de NavigationEventPriorityem favor de@IntDefpara usuários do Java (I10a9f, b/440514265).
- Aplicar o contrato do gerenciador de navegação. Se o NavigationEventHandlerdefinirisBackEnabledouisForwardEnabledcomotrue, agora você precisará substituironBackCompletedouonForwardCompleted, respectivamente. As implementações padrão agora geram uma exceção para evitar falhas silenciosas. (I17c62).
- Impor valores de prioridade válidos ao adicionar manipuladores de eventos de navegação. Chamar addHandlercom uma prioridade não compatível agora vai gerar umIllegalArgumentException, fornecendo feedback imediato para uso incorreto em todas as plataformas de destino. (I3c474).
Correções de bugs
- Faça addHandlerser idempotente e ignore registros duplicados. (I052aa, b/444734264)
- Mantenha as propriedades NavigationEventStatesincronizadas durante a recomposição. (Ib3b4d, b/444734264)
- Verifique se NavigationEventInputsrecebe as informações contextuais atuais (atual, voltar, avançar) imediatamente após o registro. (Ie65bf, b/443282983).
Versão 1.0.0-alpha08
10 de setembro de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.
Novos recursos
- Introduzir uma API NavigationEventHandlerbaseada em lambda que substitui o manipulador baseado em fluxo. Processe gestos de voltar e avançar com callbacks simples em vez de coletar fluxos, reduzindo o código boilerplate e evitando problemas de cancelamento. ForneçaNavigationBackHandlereNavigationForwardHandlercomo APIs de conveniência segmentadas. Remova oNavigationEventHandlerbaseado em fluxo e migre para os novos callbacks. (I23bac, b/436248277).
- Permite que listeners passivos acessem a pilha de retorno de navegação completa usando informações de retorno combinadas. Permite que as UIs renderizem prévias e histórico de navegação aninhado em vez de se limitarem ao callback mais alto. (I7a510, b/436248277).
- Introduzir um modelo explícito de retorno/atual/avanço para esclarecer o estado da navegação e oferecer suporte à navegação para frente com gerenciadores aninhados. (Ib86da, b/420443609)
- Adicione métodos onForward*eisForwardEnabledaNavigationEventCallback. (Ic100f, b/436248290)
- Adicione suporte à navegação para frente em NavigationEventInput. (I5734b).
Mudanças na API
- Ative o teste de eventos de navegação para frente com TestNavigationEventCallback. Use os hooksisForwardEnabledeonForward*. (I21fb5, b/420443609)
- Renomeie os callbacks onEvent*paraonBack*emNavEvent. (I228b3, b/436248290)
- Converter SwipeEdgeem uma classe in-line. (Id5e01).
- Faça com que a biblioteca navigationeventseja interoperável com Java. Todas as APIs públicas agora estão totalmente acessíveis no código Java, permitindo uma integração perfeita em projetos de linguagem mista ou somente em Java. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)
- Esclarecemos as funções da API renomeando NavigationEventCallbackparaNavigationEventHandler. Essa mudança reflete melhor a finalidade da classe de processar gestos de navegação em várias etapas. O métodoaddCallbackcorrespondente agora éaddHandler. (I2492a, b/443040331)
Correções de bugs
- Impedir que o retorno de fallback seja executado na navegação para frente. (I74814, b/436248290).
- Adição de suporte à navegação preditiva para frente. As APIs NavigationEventagora processam gestos para trás e para frente, permitindo animações consistentes para as duas direções de navegação. (Idc98c, b/436248290)
- Evitar uma falha de IllegalStateExceptiondurante a recomposição quando umNavigationEventDispatcherOwnerfilho é removido. (Iff50c, b/412629020)
- Os ouvintes passivos agora podem acessar a pilha de retorno de navegação completa usando informações de retorno combinadas, permitindo que as UIs renderizem prévias e histórico de navegação aninhado em vez de se limitarem ao callback mais alto. (I7a510, b/436248277).
Versão 1.0.0-alpha07
27 de agosto de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.
Mudanças na API
- O NavigationEventDispatcher.onHasEnabledCallbacksChangedfoi removido. (I50e97).
- Tornamos NavigationEventCallback.onEventCompleted()abstrato. (I36b38).
- Mude os métodos NavigationEventCallback#on*paraprotected. Atualize o código de chamada para substituir esses valores. (I6b691).
- Renomeie as funções DirectNavigationEventInput. (Iffb62).
- NavigationEventInput.onAttachfoi renomeado como- onAdded. (I2d0b8).
- NavigationEventInput.onDetachfoi renomeado como- onRemoved. (I2d0b8).
- NavigationEventInputHandlerfoi renomeado como- NavigationEventInput. (I676a4).
- @EmptySuperfoi adicionada a- NavigationEventInput.onHasEnabledCallbacksChanged. (If9853).
- Implemente onAttachemNavigationEventInputHandler. (I03648)
- Implemente onDetachemNavigationEventInputHandler. (I03648)
- Ativar o NavigationEventCallbackpor padrão após a criação. (Ic0188).
- NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackfoi substituída por- NavigationEventInput.onHasEnabledCallbacksChanged. (I64e93).
- Exigir a linha de execução principal para NavigationEventDispatcher.addInput. (Ic2930)
- Exigir a linha de execução principal para NavigationEventDispatcher.removeInput. (Ic2930)
- O Dispatcher.addOnHasEnabledCallbacksChangedCallbackfoi removido. Substitua peloDispatcher.onHasEnabledCallbacksChanged(Ida3e3, b/436530096)
Correções de bugs
- Correção de um bug em que adicionar um manipulador já anexado ou remover um não anexado acionava uma lógica de ciclo de vida incorreta. (I9e47b).
Versão 1.0.0-alpha06
13 de agosto de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.
Novos recursos
API Passive Listeners
Agora, é possível transmitir informações contextuais personalizadas de qualquer host de navegação e ouvir passivamente mudanças de estado de gestos em qualquer lugar da sua interface. Isso ativa animações baseadas no contexto para volta preditiva e outras navegações baseadas em gestos.
Esse recurso tem duas partes:
- Fornecimento de informações: use NavigationEventInfopara transmitir dados personalizados.
- Estado de consumo: use dispatcher.state(NavigationEventState) para observar o progresso e o contexto do gesto.
- NavigationEventCallbackagora expõe o método- setInfo(currentInfo, previousInfo)para definir o contexto de gestos em uma chamada (I1d5e7, b/424470518).
- O NavigationEventHandleradiciona uma nova sobrecarga que aceitacurrentInfoepreviousInfo, tornando-o a API principal para fornecer contexto em apps do Compose (I6ecd3, b/424470518).
Exemplo:
  data class MyScreenInfo(val screenName: String) : NavigationEventInfo
  NavigationEventHandler(
      enabled = true,
      currentInfo = MyScreenInfo("Details Screen"),
      previousInfo = MyScreenInfo("Home Screen")
  ) { /* Handle back completion */ }
- NavigationEventDispatcheragora expõe- dispatcher.statee- dispatcher.getState<T>()(If7fae, Ia90ca, b/424470518). Essas APIs baseadas em- StateFlowpermitem que qualquer interface observe o progresso do gesto e os dados contextuais sem processar o evento diretamente.
Exemplo:
  val gestureState by LocalNavigationEventDispatcherOwner.current!!
      .navigationEventDispatcher
      .state
      .collectAsState()
  val progress = gestureState.progress // Returns latestEvent.progress or 0F
  when (val state = gestureState) {
      is InProgress -> {
          val toScreen = state.currentInfo as MyScreenInfo
          val fromScreen = state.previousInfo as MyScreenInfo
          println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
      }
      is Idle -> { /* Idle state */ }
  }
- Adicione a propriedade - progressa- NavigationEventState(I7b196) que retorna- latestEvent.progressquando em andamento ou- 0Fcaso contrário:- val progress = state.progress
- Adicione o elemento combinável - NavigationEventDispatcherOwnerpara criar, vincular e descartar instâncias de- NavigationEventDispatcherde maneira hierárquica. Ative o controle dinâmico do estado ativado do dispatcher e a limpeza automática.- @Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
Mudanças na API
- O parâmetro isPassthroughfoi removido doNavigationEventCallback. (I99028, b/424470518).
- Os construtores NavigationEventStateagora são internos. Para testar, atualize o estado (o padrão éIdle) usando oDirectNavigationEventInputHandler. ChamehandleOnStartedouhandleOnProgressedpara definir o estado comoInProgressehandleOnCompletedouhandleOnCancelledpara retornar aIdle. Para atualizarNavigationEventInfo, useNavigationEventCallback.setInfo. (I93dca, b/424470518)
- Adição de parâmetros padrão a NavigationEventpara facilitar a instanciação e simplificar os testes, que devem ser usados no lugar deTestNavigationEvent. (I5dc49, I232f4)
- Adicionamos um TestNavigationEventCallbackpara testar eventos de navegação com estados atuais/anteriores específicos. (Idd22e, b/424470518)
- A classe NavigationEventInputHandlerfoi transformada em uma classe abstrata para substituir oAbstractNavigationEventInputHandleranterior por uma implementação emDirectNavigationEventInputHandler(Iadde5, Ifed40I3897c, b/432616296, b/435416924).
- Os prefixos das funções send*emNavigationEventInputHandlerforam renomeados comohandle*. (Iffcaf).
- OnBackInvokedInputHandleragora estende o- NavigationInputHandler- abstractrecém-criado. (Ib45aa).
- Mudança em NavigationEventDispatcherOwnerpara exigir um dispatcher principal em que você precisa transmitir explicitamentenullpara criar um dispatcher raiz. (Ia6f64, b/431534103)
Correções de bugs
- Melhoria da eficiência ao evitar cópias de coleta em NavigationEventDispatcher.dispose(). (I4ab09).
- Correção de um problema em que o NavigationEventHandlernão respondia corretamente às mudanças no estado ativado. (Ia5268,I19bec, I5be5c, b/431534103)
Atualizações do Google Docs
- KDocs para NavigationEventexpandido para esclarecer sua função como um wrapper de eventos unificado e detalhar o comportamento das propriedades em diferentes tipos de navegação (gestos, cliques). (I91e8d).
- Atualizamos a documentação para APIs do Compose de processamento de retorno do sistema (BackHandler,PredictiveBackHandler,NavigationEventHandler) para destacar o comportamento especificamente em relação à ordem de callback. (I7ab94, )
Atualização de dependências
- O NavigationEventagora depende do Compose Runtime 1.9.0-beta03, que permite que o artefatonavigationevent-composeofereça suporte a todas as metas do KMP. (Ia1b87).
Versão 1.0.0-alpha05
30 de julho de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.
Suporte à hierarquia pai-filho:
Um NavigationEventDispatcher agora pode ter despachantes pai e filho, formando uma estrutura de árvore hierárquica. Isso permite que os eventos de navegação sejam propagados e gerenciados de maneira mais flexível em componentes complexos da interface do Compose, refletindo a hierarquia estrutural da interface por meio de despachantes encadeados. (I194ac).
  // Create a parent dispatcher that will manage navigation events at a higher level.
  val parentDispatcher = NavigationEventDispatcher()
  // Create a child dispatcher linked to the parent, forming a hierarchy.
  val childDispatcher = NavigationEventDispatcher(parentDispatcher)
A propriedade hierárquica isEnabled permite o controle de cima para baixo de um dispatcher. Quando isEnabled é definido como false em um dispatcher, ele desativa automaticamente todos os dispatchers descendentes. Esse recurso permite desativar ramificações inteiras do sistema de eventos de navegação de maneira eficiente. (I9e985).
  // Disabling the child dispatcher disables all its callbacks and any of its children recursively.
  childDispatcher.isEnabled = false
Além disso, a propriedade isEnabled em NavigationEventCallback agora respeita o estado ativado do dispatcher associado. Isso significa que um callback é considerado ativado somente se ele e o dispatcher (incluindo os ancestrais) estiverem ativados, garantindo um controle hierárquico consistente sobre a ativação do callback. (I1799a)
  // Create a test callback and add it to the child dispatcher.
  val callback1 = TestNavigationEventCallback(isEnabled = true)
  childDispatcher.addCallback(callback1)
  // Since the childDispatcher is disabled, the callback is effectively disabled as well.
  assertThat(callback1.isEnabled).isFalse()
Um novo método dispose() foi introduzido para a limpeza adequada de despachantes e filhos deles. Chamar dispose() interrompe os listeners para evitar vazamentos de memória, descarta recursivamente todos os despachantes filhos, remove todos os retornos de chamada registrados no despachante e desvincula do pai. Isso garante que os recursos sejam liberados corretamente quando os despachantes não forem mais necessários. (I9e985).
  // Dispose the child dispatcher to clean up resources.
  childDispatcher.dispose()
Se um método público for chamado em um dispatcher descartado, uma IllegalStateException será gerada imediatamente. Isso evita falhas silenciosas e ajuda os desenvolvedores a identificar o uso inadequado durante o desenvolvimento. (Ic2dc3).
  val callback2 = TestNavigationEventCallback()
  // Attempting to use a disposed dispatcher will throw an exception.
  assertThrows<IllegalStateException> {
      childDispatcher.addCallback(callback2)
  }
Observação:vamos lançar um novo elemento combinável NavigationEventDispatcherOwner que gerencia automaticamente um dispatcher secundário na interface do Compose em aosp/3692572. No entanto, essa mudança não foi incluída na versão atual e está planejada para a próxima.
Biblioteca de testes de navegação
- Adição do módulo navigationevent-testingpara fornecer utilitários de teste dedicados à bibliotecanavigationevent. (0e50b6)
- Adicione a classe utilitária falsa TestNavigationEventCallbackpara testes. Ele grava chamadas de método de callback e armazena itensNavigationEventrecebidos para oferecer suporte à verificação. (4a0246)
- Adicione a função utilitária falsa TestNavigationEventpara criar instânciasNavigationEventcom valores padrão, simplificando os testes de unidade para o processamento de eventos de navegação. (3b63f5).
- Adicione a classe utilitária falsa TestNavigationEventDispatcherOwnerpara testes. Ele rastreia contagens de eventos de fallback e de mudança de estado ativado para oferecer suporte à verificação de interação em testes. (c8753e)
Mudanças na API
- Mova NavigationEventInputHandlerdeandroidMainparacommonMainpara disponibilizar no código comum do KMP. Adicione novos métodospublic send*para despachar eventos. Mude as funções de envio emNavigationEventDispatcherdepublicparainternal. Agora, os usuários precisam usarNavigationEventInputHandlerpara enviar eventos. (Ia7114)
- NavigationInputHandlerfoi renomeado como- OnBackInvokedInputHandler. (I63405)
Correções de bugs
- Refatoração de NavigationEventDispatcherpara reduzir a sobrecarga, evitando alocações de listas intermediárias e melhorando o desempenho de envio de callback. (I82702, I1a9d9).
- Adicione anotações @FloatRangeaos campostouchX,touchYeprogressemNavigationEventpara aplicar intervalos de valores válidos no momento da compilação e melhorar a segurança da API. (Iac0ec).
Versão 1.0.0-alpha04
2 de julho de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.
Correções de bugs
- Usamos implementedInJetBrainsForkparanavigationevent-composee adicionamos um destinocommonStubspara corresponder às convenções do Compose. Mudança solicitada pela JetBrains. (f60c79).
- Correção da aplicação do plug-in do compilador do Compose para Kotlin/Native para garantir a geração correta de stubs. Não há impacto no comportamento ou nas APIs públicas. (1890c9)
Versão 1.0.0-alpha03
18 de junho de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estes commits.
Novos recursos
- Introduzimos um novo módulo navigationevent-composepara oferecer suporte aos recursos do Jetpack Compose na bibliotecanavigationevent. (980d78)
- O NavigationEventCompose adicionou uma nova composição localLocalNavigationEventDispatcherOwner. Ele retorna um valor anulável para determinar melhor se ele está disponível na composição atual.NavigationEventHandlervai gerar um erro se o proprietário não for encontrado. (62ffda)
- O NavigationEventCompose adicionou um novo elemento combinávelNavigationEventHandlerpara processar eventos (gesto de volta preditivo). Ele fornece umFlowde objetosNavigationEventque precisam ser coletados na lambda de suspensão fornecida c42ba6 :
NavigationEventHandler { progress: Flow<NavigationEvent> ->
  // This block is executed when the back gesture begins.
  try {
    progress.collect { backEvent ->
      // Handle gesture progress updates here.
    }
    // This block is executed if the gesture completes successfully.
  } catch (e: CancellationException) {
    // This block is executed if the gesture is cancelled
    throw e
  } finally {
    // This block is executed either the gesture is completed or cancelled
  }
}
Mudanças na API
- Cada NavigationEventCallbackagora pode ser registrado com apenas umNavigationEventDispatcherpor vez. Adicionar a vários distribuidores gera umIllegalStateException. Esse comportamento é diferente deOnBackPressedDispatcher, que permite vários agentes. (e82c19)
- Transformamos isPassThroughem umvalpara evitar mutações durante a navegação, o que poderia interromper o envio deNavigationEvent. (I0b287)
Versão 1.0.0-alpha02
4 de junho de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.
Mudanças na API
- Substitua o construtor secundário de NavigationEventDispatcherpor argumentos padrão. (I716a0)
- Remova a propriedade de prioridade de NavigationEventCallback. Em vez disso, transmita a prioridade paraNavigationEventDispatcher.addCallback(). (I13cae).
Correções de bugs
- Foi corrigido um ConcurrentModificationExceptionque podia ocorrer quandoNavigationEventCallback.remove()era chamado devido à modificação simultânea da lista interna de elementos fecháveis. (b/420919815)
Versão 1.0.0-alpha01
20 de maio de 2025
Lançamento de androidx.navigationevent:navigationevent-*:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estes commits.
Novos recursos
- A biblioteca androidx.navigationeventfornece uma API KMP-first para processar o retorno do sistema e o retorno preditivo. ONavigationEventDispatcherserve como uma API comum para registrar uma ou mais instânciasNavigationEventCallbackpara receber eventos de retorno do sistema.
- Essa camada fica abaixo das APIs lançadas anteriormente em androidx.activitye tem como objetivo ser uma substituição menos opinativa para o uso das APIs Activity em componentes de nível superior ou o uso direto das APIsOnBackInvokedDispatcherdo framework Android. As APIsandroidx.activityforam reescritas com base nas APIs Navigation Event como parte da Activity 1.12.0-alpha01.
