title: (Flutter) Infinite Scroll `ListView.builder` with Finite Content
body: <h1>1. The Problem</h1>
  
  <p><strong>How do I make my <code>ListView.builder</code> be able to scroll to empty space both to the top and to the bottom?</strong></p>
  
  <p>For example, I have a list of custom widgets, and I would like the user to be able to get the top card on the list &#8212; which is at the top of the screen &#8212; closer to his thumb by scrolling to it, while <code>Flutter</code> renders the top space with an empty background.</p>
  
  <h1>2. What I've tried so far</h1>
  
  <p>The basic shape of my code is a basic implementation of the <code>ListView.builder</code> constructor:</p>
  
  <pre class="lang-dart prettyprint-override"><code>ListView.builder(
    itemCount: widgetsList.length,
    itemBuilder: (context, index){
      return widgetsList[index];
    },
  ),
  </code></pre>
  
  <p>I've tried fiddling with some of the <a href="https://api.flutter.dev/flutter/widgets/ListView-class.html" rel="nofollow noreferrer"><code>ListView.builder</code>'s properties</a> and also some workarounds so far:</p>
  
  <ol>
  <li>At first, I thought that either <code>shrinkWrap: true</code> or <code>physics: AlwaysScrollableScrollPhysics()</code> &#8212; maybe I have to set the <code>parent</code> parameter of <code>AlwaysScrollableScrollPhysics()</code>? &#8212; would do the job, but none of them seem to work.</li>
  <li>I've also tried to do this artifially by creating empty <code>Container</code>s both on the top and the bottom of the list, and adding something like <code>dragStartBehavior: DragStartBehavior.values[1]</code> &#8212; I don't think that's how you use the <code>.values</code> property actually &#8212; to make the list start from the second value, but it didn't work.</li>
  </ol>