Flutter pageview dynamic height

To create a dynamic height page view in Flutter, you can use the PageView.builder widget along with a custom height calculation for its children.

First, let’s assume you have a list of items you want to display in the page view:


List<String> items = ['Item 1', 'Item 2', 'Item 3'];
  

Next, you can define the PageView.builder widget and calculate the height of each child based on its content:


PageView.builder(
  itemCount: items.length,
  itemBuilder: (BuildContext context, int index) {
    return Container(
      child: Text(items[index]),
      height: calculateHeight(items[index]), // Custom height calculation
    );
  },
)
  

In the calculateHeight function, you can define your own logic to calculate the height of each item. For example, you can use the RichText widget to measure the height based on the text style and content:


double calculateHeight(String content) {
  final textSpan = TextSpan(
    text: content,
    style: TextStyle(fontSize: 16),
  );
  
  final textPainter = TextPainter(
    text: textSpan,
    textDirection: TextDirection.ltr,
  );
  
  textPainter.layout(maxWidth: MediaQuery.of(context).size.width);
  return textPainter.size.height;
}
  

This will dynamically calculate the height of each item based on its content using the provided logic.

By using this approach, you can have a dynamic height for each page in your PageView based on its content.

Leave a comment