Home > Mobile >  How to use ExpandablePanel when expanded child height is unknown in Flutter?
How to use ExpandablePanel when expanded child height is unknown in Flutter?

Time:07-08

I want to use this ExpandablePanel. And this is my code:

SizedBox(
    height: 150,
    child: ExpandablePanel(
        theme: const ExpandableThemeData(
          headerAlignment: ExpandablePanelHeaderAlignment.center,
          tapBodyToCollapse: true,
          iconPadding: EdgeInsets.only(right: 18),
        ),
        header: Padding(
          padding: EdgeInsets.only(left: 15, right: 15, top: 10, bottom: 15),
          child: Text("Hello", style: TextStyle(fontSize: 16)),
        ),
        collapsed: Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ", softWrap: true, maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 16)),
        expanded: Column (
          children: [
            Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ", softWrap: true, maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 16))
          ],
        )
    ),
  )

The problem is that as I understand ExpandablePanel needs to be inside some box with fixed height. But I in expanded: Column (...) I can have many different children and I can't calculate their height (and I don't want to do it as it is a very bad way). So, now I get A RenderFlex overflowed by 84 pixels on the bottom. Could anyone say how to use ExpandablePanel when height of the expanded child is unknown?

CodePudding user response:

You can wrap your widget in a SingleChildScrollView():

 SizedBox(
      height: 150,
      child: SingleChildScrollView(
        child: ExpandablePanel(
            theme: const ExpandableThemeData(
              headerAlignment: ExpandablePanelHeaderAlignment.center,
              tapBodyToCollapse: true,
              iconPadding: EdgeInsets.only(right: 18),
            ),
            header: Padding(
              padding:
                  EdgeInsets.only(left: 15, right: 15, top: 10, bottom: 15),
              child: Text("Hello", style: TextStyle(fontSize: 16)),
            ),
            collapsed: Text(
                "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                softWrap: true,
                maxLines: 2,
                overflow: TextOverflow.ellipsis,
                style: TextStyle(fontSize: 16)),
            expanded: Column(
              children: [
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
                Text(
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vehicula quam id nunc porttitor tincidunt a tincidunt sem. Sed dignissim varius urna, quis dignissim diam consequat ac. In non eleifend enim. Vivamus ut elit ante. Vivamus at risus vitae ligula viverra imperdiet. Morbi vel imperdiet lectus. Etiam quis lectus justo. Aliquam pulvinar leo at ligula iaculis euismod. Phasellus quis fringilla enim, at porttitor est. ",
                    softWrap: true,
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                    style: TextStyle(fontSize: 16)),
              ],
            )),
      ),
    );
  • Related