fix(stats): significantly improve stats screen performance

This commit is contained in:
Nishant Mishra
2025-12-16 22:44:34 +05:30
parent 85321352c0
commit f4bd74aafd
5 changed files with 13 additions and 12 deletions

View File

@@ -23,6 +23,7 @@ import androidx.compose.animation.EnterTransition
import androidx.compose.animation.ExitTransition
import androidx.compose.animation.SharedTransitionDefaults
import androidx.compose.animation.SharedTransitionScope
import androidx.compose.animation.SharedTransitionScope.ResizeMode.Companion.scaleToBounds
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
@@ -30,6 +31,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.layout.ContentScale
import androidx.navigation3.ui.LocalNavAnimatedContentScope
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@@ -41,12 +43,14 @@ fun Modifier.sharedBoundsReveal(
boundsTransform: BoundsTransform = SharedTransitionDefaults.BoundsTransform,
enter: EnterTransition = fadeIn(),
exit: ExitTransition = fadeOut(),
resizeMode: SharedTransitionScope.ResizeMode = SharedTransitionScope.ResizeMode.RemeasureToBounds,
resizeMode: SharedTransitionScope.ResizeMode = scaleToBounds(
contentScale = ContentScale.Crop
),
clipShape: Shape = MaterialTheme.shapes.largeIncreased,
renderInOverlayDuringTransition: Boolean = true,
): Modifier {
): Modifier =
with(sharedTransitionScope) {
return this@sharedBoundsReveal
this@sharedBoundsReveal
.sharedBounds(
sharedContentState = sharedContentState,
animatedVisibilityScope = animatedVisibilityScope,
@@ -57,7 +61,4 @@ fun Modifier.sharedBoundsReveal(
clipInOverlayDuringTransition = OverlayClip(clipShape),
renderInOverlayDuringTransition = renderInOverlayDuringTransition,
)
// .skipToLookaheadSize()
// .skipToLookaheadPosition()
}
}

View File

@@ -214,7 +214,7 @@ fun SharedTransitionScope.LastMonthScreen(
context.model.extraStore[lastMonthSummaryChartData.second][x.toInt()]
},
modifier = Modifier
.sharedElement(
.sharedBounds(
sharedContentState = this@LastMonthScreen
.rememberSharedContentState("last month chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current

View File

@@ -215,7 +215,7 @@ fun SharedTransitionScope.LastWeekScreen(
context.model.extraStore[mainChartData.second][x.toInt()]
},
modifier = Modifier
.sharedElement(
.sharedBounds(
sharedContentState = this@LastWeekScreen
.rememberSharedContentState("last week chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current

View File

@@ -223,7 +223,7 @@ fun SharedTransitionScope.LastYearScreen(
},
modifier = Modifier
.padding(horizontal = 16.dp)
.sharedElement(
.sharedBounds(
sharedContentState = this@LastYearScreen
.rememberSharedContentState("last year chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current

View File

@@ -290,7 +290,7 @@ fun SharedTransitionScope.StatsMainScreen(
context.model.extraStore[lastWeekSummaryChartData.second][x.toInt()]
},
modifier = Modifier
.sharedElement(
.sharedBounds(
sharedContentState = this@StatsMainScreen
.rememberSharedContentState("last week chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current
@@ -374,7 +374,7 @@ fun SharedTransitionScope.StatsMainScreen(
context.model.extraStore[lastMonthSummaryChartData.second][x.toInt()]
},
modifier = Modifier
.sharedElement(
.sharedBounds(
sharedContentState = this@StatsMainScreen
.rememberSharedContentState("last month chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current
@@ -457,7 +457,7 @@ fun SharedTransitionScope.StatsMainScreen(
context.model.extraStore[lastYearSummaryChartData.second][x.toInt()]
},
modifier = Modifier
.sharedElement(
.sharedBounds(
sharedContentState = this@StatsMainScreen
.rememberSharedContentState("last year chart"),
animatedVisibilityScope = LocalNavAnimatedContentScope.current