【问题标题】:How to implement swipe to refresh in Jetpack compose如何在Jetpack compose中实现滑动刷新
【发布时间】:2022-12-22 05:09:56
【问题描述】:

如何使用 kotlin 在 Jetpack compose 中创建滑动刷新?请分享正确的参考链接

刷卡刷新不可用

 SwipeRefresh(
        state = rememberSwipeRefreshState(isRefreshing),
        onRefresh = {  },
    ) {
        LazyColumn {
           
        }
    }

【问题讨论】:

    标签: android android-jetpack-compose android-jetpack-compose-lazy-column


    【解决方案1】:

    要创建滑动刷新布局,我们需要在 build.gradle 中添加依赖,它将提供滑动刷新布局,就像传统 android 中的 SwipeRefreshLayout 一样。

      implementation 'com.google.accompanist:accompanist-swiperefresh:0.24.13-rc'
    

    ..

    要创建这种布局,我们需要两个 API,一个用于布局的 SwipeRefresh,另一个用于记住状态的 rememberSwipeRefreshState。

    @Composable
    fun SwipeRefreshCompose() {
    
        var refreshing by remember { mutableStateOf(false) }
        LaunchedEffect(refreshing) {
            if (refreshing) {
                delay(3000)
                refreshing = false
            }
        }
    
        SwipeRefresh(
            state = rememberSwipeRefreshState(isRefreshing = refreshing),
            onRefresh = { refreshing = true },
        ) {
    
           // list view
    
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      现在您可以使用内置的pullRefresh修饰符。

      就像是:

      val refreshScope = rememberCoroutineScope()
      var refreshing by remember { mutableStateOf(false) }
      
      fun refresh() = refreshScope.launch {
          refreshing = true
          //...do something
          refreshing = false
      }
      
      val state = rememberPullRefreshState(refreshing, ::refresh)
      
      Box(Modifier.pullRefresh(state)) {
          LazyColumn(Modifier.fillMaxSize()) {
              if (!refreshing) {
                  items(itemCount) {
                      //...
                  }
              }
          }
      
          PullRefreshIndicator(refreshing, state, Modifier.align(Alignment.TopCenter))
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-07
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多