PopToView

Descrição da ação PopToView e seus atributos

O que é?

A ação PopToView faz a navegação para uma tela anterior a tela atual, que esteja na mesma pilha de telas. Ao realizar a ação, qualquer tela posterior a tela para a qual se navegou será destruída. Por exemplo, se a aplicação exibe uma tela que é a terceira tela em uma pilha, ao navegar para a primeira, a segunda e terceira telas serão destruídas.

A estrutura da PopToView é:

AtributoTipoObrigatórioDefinição
route​StringRota de alguma tela que está na pilha.
navigationContextNavigationContextContexto salvo na tela destino.

Como usar?

Para testar, iremos utilizar três telas:

  1. A primeira tela será a tela inicial e a primeira da pilha. O endpoint dessa tela deverá ser "/firstscreen".
  2. A segunda deverá ter como endpoint "/secondscreen" pois essa será URL escolhida para a navegação do botão da tela inicial e, por isso, esse endpoint deverá retornar a tela 2, segunda tela na pilha.
  3. A terceira tem como endpoint "/thirdscreen", pois essa será a URL escolhida para a navegação do botão da tela 2 e, por isso, esse endpoint deverá retornar a tela 3. É na tela 3 que a ação PopToView será executa com o clique de um botão. A url listada na ação PopToView deverá ser "/firstscreen"

A seguir listamos os códigos das telas de teste:

Tela inicial

Screen(
    child = Container(
        children = listOf(
            Text(
                "First Screen on Stack"
            ),
            Button(
                text = "Click me!",
                onPress = listOf(
                    Navigate.PushView(
                        Route.Remote(
                            url = "/secondscreen"
                        )
                    )
                )
            )
        )
    )
)

Tela 2

Screen(
    child = Container(
        children = listOf(
            Text(
                "Second Screen on Stack"
            ),
            Button(
                text = "Click me!",
                onPress = listOf(
                    Navigate.PushView(
                        Route.Remote(
                            url = "/thirdscreen"
                        )
                    )
                )
            )
        )
    )
)

Tela 3

Screen(
    child = Container(
        children = listOf(
            Text(
                "Third Screen on Stack"
            ),
            Button(
                text = "Click me to go to first screen",
                onPress = listOf(
                    Navigate.PopToView(
                      route = "/firstscreen"
                    )
                )
            )
        )
    )
)

Última modificação 07/03/2022: fix: Update docs 2.0 (#858) (4368557d)