title: How to add footer to ReorderableListView in flutter
body: <p>Trying to make a ui that contains Header and Footer with <strong>rearrangeable content</strong> items. There is a property called <strong>header</strong> from which we can add header item. But what to do if I want to add <strong>footer</strong> item as well.</p>
  
  <pre><code>import 'package:flutter/material.dart';
  
  class MyStickyHeader extends StatefulWidget {
    @override
    State&lt;StatefulWidget&gt; createState() {
      return _MyStickyHeaderState();
    }
  }
  
  class _MyStickyHeaderState extends State&lt;MyStickyHeader&gt; {
    List&lt;Widget&gt; _list = [
      Text("Apple"),
      Text("Ball"),
      Text("Cat"),
      Text("Dog"),
      Text("Elephant")
    ];
  
    @override
    Widget build(BuildContext context) {
      return Container(
        margin: EdgeInsets.only(top: 30, left: 10),
        color: Colors.white,
        child: showData(),
      );
    }
  
    Widget showData() {
      return Container(
        child: ReorderableListView(
          header: Container(
            height: 100,
            color: Colors.red,
          ),
          children: _list
              .map((item) =&gt; Container(
                    padding: EdgeInsets.all(10),
                    key: Key("${(item as Text).data}"),
                    child: Row(
                      children: &lt;Widget&gt;[
                        Icon(Icons.ac_unit),
                        Expanded(
                          child: item,
                        )
                      ],
                    ),
                  ))
              .toList(),
          onReorder: (int start, int current) {
            // dragging from top to bottom
            if (start &lt; current) {
              int end = current - 1;
              Widget startItem = _list[start];
              int i = 0;
              int local = start;
              do {
                _list[local] = _list[++local];
                i++;
              } while (i &lt; end - start);
              _list[end] = startItem;
            }
  
            // dragging from bottom to top
            if (start &gt; current) {
              Widget startItem = _list[start];
              for (int i = start; i &gt; current; i--) {
                _list[i] = _list[i - 1];
              }
              _list[current] = startItem;
            }
            setState(() {});
          },
        ),
      );
    }
  }
  </code></pre>