Navigation 回到上一頁轉場

先參考之前的AnimationNavigation的文章

還有App Top bar添加上一頁的文章

img

在NavHost加上navController.popBackStack()

1
2
3
4
5
composable(Destinations.ArticleDetail.route) {
  ArticleDetailScreen(onBack = {
    navController.popBackStack()
  })
 }

在詳細頁添加
fun()中丟入lambda的參數onBack: () -> Unit
在navigation的.clickable加上onBack(),記得要尾部括號(),不然不會執行lambda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
fun ArticleDetailScreen(onBack: () -> Unit) {
  Scaffold(
    topBar = {
      TopAppBar(
        title = {
          Text(
            text = "Detail",
            modifier = Modifier.fillMaxWidth(),
            textAlign = TextAlign.Center
          )
        },
        navigationIcon = {
          Icon(
            imageVector = Icons.Default.NavigateBefore,
            contentDescription = null,
            //增加返回的方法
            modifier = Modifier
              .clickable {
                onBack()
              }
              .padding(8.dp)
          )
        },
        actions = {
          Icon(imageVector = Icons.Default.TextFields,
            contentDescription = null,
            modifier = Modifier
              .clickable {
                //TODO 字體放大
              }
              .padding(8.dp)
          )
        }
      )
    },
    modifier = Modifier
      .background(MaterialTheme.colors.primary)
      .statusBarsPadding()
  ) {
    Text(text = "文章詳情")
  }
}

results matching ""

    No results matching ""