A Sliver in Flutter is a low-level scrollable building block used inside widgets like CustomScrollView.
Unlike ListView, slivers are rendered lazily and react directly to scroll position, giving you fine-grained control over scrolling behavior. In practice, slivers are used to build complex scroll effects such as collapsing headers or sticky elements.
Slivers enable:
Many modern Flutter UIs rely on slivers under the hood.
Slivers live inside a CustomScrollView. Each sliver defines:
Only visible slivers are built, which improves performance for long or complex scrollable layouts.
CustomScrollView(
slivers: [
SliverAppBar(
expandedHeight: 200,
pinned: true,
flexibleSpace: FlexibleSpaceBar(
title: Text('Sliver AppBar'),
),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => ListTile(title: Text('Item $index')),
childCount: 50,
),
),
],
);This creates a collapsible app bar with a lazily built list.
Sliver is useful when a Flutter app requires dynamic or custom scrolling behavior.
Slivers are effective when multiple scrollable areas need to coexist or when different parts of the interface must react differently to scrolling.
With slivers, developers can:
This enables more flexible and interactive scrolling experiences.
Slivers are also useful when performance is important, particularly in long or complex scrollable views.
They provide precise control over:
This reduces unnecessary widget rebuilding and helps maintain smooth scrolling, even on lower-end devices.
Slivers make it easier to implement scroll-based UI effects such as:
Slivers are best suited for layouts that require flexible and interactive scrolling beyond what standard widgets provide.
They are commonly used in:
In these scenarios, both visual design and performance are important.
Sliver is not always necessary and can introduce additional complexity.
If a UI contains simple, linear lists or grids without dynamic headers, standard widgets such as ListView or GridView are usually easier to implement and maintain.
Using slivers in these situations can make code less readable, which may be a disadvantage in small projects or teams that prioritize maintainability over fine-grained scroll control.
Slivers should be avoided when the layout is mostly static and does not require advanced scrolling behavior.
In these cases:
This can slow development without providing meaningful benefits.
For simple screens where clarity and maintainability are more important than performance tuning or advanced scrolling effects, standard scrollable widgets provide a more predictable and straightforward codebase.
SliverAppBar – collapsible or pinned app barSliverList – lazy-loaded listSliverGrid – lazy-loaded gridSliverPersistentHeader – custom sticky headersSliverFillRemaining – fills remaining space (great for empty states)SliverToBoxAdapter – wraps a single normal widget into a sliverThere is no such thing as a “SliverContainer”. Regular widgets must be wrapped using SliverToBoxAdapter.
ListView inside a CustomScrollViewColumns inside SliverToBoxAdapterSliverList for lists.ListView; switch to slivers only when needed.SliverToBoxAdapter only for single elements (banner, header, button).SliverFillRemaining for centered empty or loading states.Slivers are most valuable when you need advanced, scroll-driven layouts rather than basic lists.
15 min. • Jun 6, 2023
Flutter is known for its seamless UI/UX features and robust design elements. It allowed us to deliver a unique customer experience in the “CA24 Mobile” banking app. This article shares some of the learnings and pain points behind implementing it in this large project.
10 min • Oct 27, 2025
In this article, we’re sharing LeanCode’s 12 practical Flutter and Dart patterns that help you write less boilerplate, make your code cleaner, and catch mistakes earlier. Apply these patterns and you'll find yourself coding faster, communicating more clearly with your teammates, and spending less time debugging issues that the compiler could have caught.
Flutter ships with plenty of high-quality widgets, layouts, and themes that developers can use to speed up the whole creation process. A great example of custom widgets made in Flutter is the Placement Wheel developed for one of our clients. See how to do it.