<div class='type'>Class</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
class LazyLayoutPrefetchState()
```


State for lazy items prefetching, used by lazy layouts to instruct the prefetcher.


## Secondary Constructors

```kotlin
@ExperimentalFoundationApi
constructor(
    prefetchScheduler: PrefetchScheduler? = null,
    onNestedPrefetch: (NestedPrefetchScope.() -> Unit)? = null,
) : this() {
    this.prefetchScheduler = prefetchScheduler
    this.onNestedPrefetch = onNestedPrefetch
}
```


State for lazy items prefetching, used by lazy layouts to instruct the prefetcher.

#### Parameters

| | |
| --- | --- |
| prefetchScheduler | the `PrefetchScheduler` implementation to use to execute prefetch requests. If null is provided, the default `PrefetchScheduler` for the platform will be used. |
| onNestedPrefetch | a callback which will be invoked when this LazyLayout is prefetched in context of a parent LazyLayout, giving a chance to recursively prefetch its own children. See `NestedPrefetchScope`. |



```kotlin
@ExperimentalFoundationApi
constructor(onNestedPrefetch: (NestedPrefetchScope.() -> Unit)? = null) : this() {
    this.onNestedPrefetch = onNestedPrefetch
}
```


State for lazy items prefetching, used by lazy layouts to instruct the prefetcher.

#### Parameters

| | |
| --- | --- |
| onNestedPrefetch | a callback which will be invoked when this LazyLayout is prefetched in context of a parent LazyLayout, giving a chance to recursively prefetch its own children. See `NestedPrefetchScope`. |



## Functions



<h2 id="scheduleprecomposition-index">schedulePrecomposition</h2>

```kotlin
fun schedulePrecomposition(@IntRange(from = 0) index: Int): PrefetchHandle
```


Schedules precomposition for the new item. If you also want to premeasure the item please use
`schedulePrecompositionAndPremeasure` instead. This function should only be called once per
item. If the item has already been composed at the time this request executes, either from a
previous call to this function or because the item is already visible, this request should
have no meaningful effect.

#### Parameters

| | |
| --- | --- |
| index | item index to prefetch. |


#### Returns

| | |
| --- | --- |
|  | A `PrefetchHandle` which can be used to control the lifecycle of the prefetch request. Use `PrefetchHandle.cancel` to cancel the request or `PrefetchHandle.markAsUrgent` to mark the request as urgent. |





<hr class="docs-overload-divider">


<h2 id="scheduleprecompositionandpremeasure-constraints-onitempremeasured">schedulePrecompositionAndPremeasure</h2>

```kotlin
fun schedulePrecompositionAndPremeasure(
        @IntRange(from = 0) index: Int,
        constraints: Constraints,
        onItemPremeasured: (PrefetchResultScope.() -> Unit)? = null,
    ): PrefetchHandle
```


Schedules precomposition and premeasure for the new item. This should be used instead of
`schedulePrecomposition` if you also want to premeasure the item. This function should only
be called once per item. If the item has already been composed / measured at the time this
request executes, either from a previous call to this function or because the item is already
visible, this request should have no meaningful effect.

#### Parameters

| | |
| --- | --- |
| index | item index to prefetch. |
| constraints | `Constraints` to use for premeasuring. |
| onItemPremeasured | This callback is called when the item premeasuring is finished. If the request is canceled or no measuring is performed this callback won't be called. Use `PrefetchResultScope.getSize` to get the item's size. |


#### Returns

| | |
| --- | --- |
|  | A `PrefetchHandle` which can be used to control the lifecycle of the prefetch request. Use `PrefetchHandle.cancel` to cancel the request or `PrefetchHandle.markAsUrgent` to mark the request as urgent. |