title: Flutter - ListView.builder with very large size and does not change
body: <p>How can I decrease the size of items using the <code>ListView.builder</code>
  I already tried to tinker with everything in <code>ItemCategory</code> but the size remains the same.</p>
  
  <p>Using the ListView the size is the smallest good according to this images below:</p>
  
  <p>Using the <a href="https://stackoverflow.com/questions/48662795/flutter-strange-listview-behavior-after-refresh">Flutter - Strange ListView behavior after refresh</a> code the items are well-sized, but by changing the <code>ListView</code> to<code>ListView.builder</code> the size changes completely and the <code>ItemCategory</code> class is the same</p>
  
  <p><strong>without ListView.builder</strong>
  <a href="https://i.stack.imgur.com/xDvmh.png" rel="noreferrer"><img src="https://i.stack.imgur.com/xDvmh.png" alt="enter image description here"></a></p>
  
  <p><strong>with ListView.builder</strong>
  <a href="https://i.stack.imgur.com/STvPR.png" rel="noreferrer"><img src="https://i.stack.imgur.com/STvPR.png" alt="enter image description here"></a></p>
  
  <pre><code>import 'package:flutter/material.dart';
  import 'dart:math';
  
  void main() {
    runApp(new MyApp());
  }
  
  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return new MaterialApp(
        home: new CategoryPage(),
      );
    }
  }
  
  class CategoryPage extends StatefulWidget {
    @override
    CategoryPageState createState() =&gt; new CategoryPageState();
  }
  
  class CategoryPageState extends State&lt;CategoryPage&gt; {
    Color blueAppBar = new Color(0xFF26C6DA);
    List&lt;Widget&gt; listCategories = [];
    List listaDB = [];
    List lista2DB = [];
    List listaCategory;
    final List&lt;Widget&gt; children = &lt;Widget&gt;[];
  
    String randomString(int length) {
      var rand = new Random();
      var codeUnits = new List.generate(
          length, 
          (index){
            return rand.nextInt(33)+89;
          }
      );   
      return new String.fromCharCodes(codeUnits);
    }
  
    @override
    void initState() {
      this.listaDB = 
        [
          [{'category': 'foo01'}],
          [{'category': 'foo02'}],
          [{'category': 'foo03'}],
          [{'category': 'foo04'}],
          [{'category': 'foo05'}],
          [{'category': 'foo06'}],
          [{'category': 'foo07'}],
          [{'category': 'foo08'}],
          [{'category': 'foo09'}],
          [{'category': 'foo10'}],
          [{'category': 'foo11'}],
          [{'category': 'foo12'}],
          [{'category': 'foo13'}],
          [{'category': 'foo14'}],
          [{'category': 'foo15'}],
          [{'category': 'foo16'}],
          [{'category': 'foo17'}],
          [{'category': 'foo18'}],
          [{'category': 'foo19'}],
          [{'category': 'foo20'}],
          [{'category': 'foo21'}],
          [{'category': 'foo22'}],
          [{'category': 'foo23'}],
          [{'category': 'foo24'}]
        ];
  
      for(var i in this.listaDB) {
        var category = i[0]['category'];
        children.add(
          new ItemCategory(
            key: new Key(randomString(20)),
            category: category,
          )
        );
      }
    }
  
    @override
    Widget build(BuildContext context) {   
      return new Scaffold( 
        appBar: new AppBar(
          title: new Text('Categories'),
          backgroundColor: blueAppBar,
          actions: &lt;Widget&gt;[
            new IconButton(
              icon: new Icon(Icons.refresh),
              onPressed: () {
                setState(() {
                  children.clear();
                  for(var i in this.lista2DB) {
                    var category = i[0]['category'];
                    children.add(
                      new ItemCategory(
                        key: new Key(randomString(20)),
                        category: category,
                      )
                    );
                  }
                });
              },
            )
          ],
        ),
        body: new ListView.builder(
          itemBuilder: (BuildContext context, int index) =&gt; children[index],
          itemExtent: 128.0,
          itemCount: children.length,
        ),
      );
    }
  }
  
  class ItemCategory extends StatelessWidget {
    final String category;
  
    ItemCategory({
      Key key,
      this.category}) : super(key: key);
  
    @override
    Widget build(BuildContext context) {
      return new Container(
        decoration: new BoxDecoration(
          border: new Border(
            top: new BorderSide(style: BorderStyle.solid, color: Colors.black26),
          ),
          color: new Color(0xFFFAFAFA),
        ),
        margin: new EdgeInsets.only(top: 0.0, bottom: 0.0),
        child: new Row(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: &lt;Widget&gt;[
            new Expanded(
              child: new Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: &lt;Widget&gt;[
                  new Container(
                    margin: new EdgeInsets.only(left: 16.0),
                    padding: new EdgeInsets.only(right: 40.0, top: 4.5, bottom: 4.5),
                    child: new Row(
                      children: &lt;Widget&gt;[
                        new Container(
                          margin: new EdgeInsets.only(right: 16.0),
                          child: new Icon(
                            Icons.brightness_1,
                            color: Colors.black,
                            size: 35.0,
                          ),
                        ),
                        new Text(this.category),
                      ],
                    )
                  )
                ],
              ),
            )
          ],
        ),
      );
    }
  }
  </code></pre>