Search packages, repositories and app categories

expandable_text cover
Package detailsv2.3.0

expandable_text

Widget that only shows the first lines of a text and adds a link to expand the full text.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
27.4K
Likes
291
Pub points
140

Install package

flutter pub add expandable_text

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The expandable_text package provides a Flutter widget that displays only the initial lines of a text, with a clickable link to reveal the full content. It's ideal for managing long text snippets in a clean, user-friendly way. The widget supports smooth animations when expanding or collapsing and works across all major platforms including Android, iOS, Web, macOS, Windows, and Linux. It enhances readability by preventing excessive vertical space usage while maintaining accessibility.

Use cases

  • Displaying long descriptions in lists
  • Showing truncated reviews or comments
  • Improving UI performance with large text blocks
  • Creating interactive content sections
  • Reducing screen clutter in chat interfaces

Key features

  • Smooth expand/collapse animations
  • Customizable number of visible lines
  • Configurable expand/collapse text
  • Supports rich text and styling
  • Cross-platform compatibility
  • Easy integration with existing widgets

Suitable for

  • Apps with lengthy text content
  • User interfaces requiring dynamic text expansion
  • Developers seeking lightweight text management
  • Projects needing responsive text layout
  • UI/UX designers focused on minimalism

Considerations

  • May require additional styling for consistent appearance
  • Performance impact with very large texts
  • Limited customization for complex layouts
  • Not suitable for non-interactive text display
  • Requires careful handling of text overflow

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Build pub package codecov license

This Flutter package includes the widget ExpandableText which you can use to initially only show a defined number of lines of a probably long text. The widget appends a configurable text link which lets the user expand the full text, or collapse it again.

Example with maxLines=1

Getting started

Add this to your package's pubspec.yaml file:

dependencies:
  expandable_text: 2.3.0

Next, import the package into your dart code:

import 'package:expandable_text/expandable_text.dart';
Usage

Show an expandable text if longText exceeds one line:

Widget build(BuildContext context) {
    return ExpandableText(
        longText,
        expandText: 'show more',
        collapseText: 'show less',
        maxLines: 1,
        linkColor: Colors.blue,
    );
}
Advanced example

This example shows a message that was posted by a user. The username is always visible right before the text and tapping on it opens the user profile. The text is truncated after two lines and can be expanded by tapping on the link show more at the end or the text itself. After the text was expanded it cannot be collapsed again as no collapseText was provided. URLs, @mentions and #hashtags in the text are styled differently and can be tapped to open the browser or the user profile.

Widget build(BuildContext context) {
    return ExpandableText(
        message,
        expandText: 'show more',
        maxLines: 2,
        linkColor: Colors.blue,
        animation: true,
        collapseOnTextTap: true,
        prefixText: username,
        onPrefixTap: () => showProfile(username),
        prefixStyle: TextStyle(fontWeight: FontWeight.bold),
        onHashtagTap: (name) => showHashtag(name),
        hashtagStyle: TextStyle(
            color: Color(0xFF30B6F9),
        ),
        onMentionTap: (username) => showProfile(username),
        mentionStyle: TextStyle(
            fontWeight: FontWeight.w600,
        ),
        onUrlTap: (url) => launchUrl(url),
        urlStyle: TextStyle(
            decoration: TextDecoration.underline,
        ),
    );
}

Features

  • Link to expand the collapsed text (expandText)
  • Expand and collapse animation (animation, animationDuration, animationCurve)
  • Optional link to collapse the expanded text (collapseText)
  • Configure the style of the link (linkStyle / linkColor)
  • Control whether the ellipsis is part of the link (linkEllipsis)
  • Optional prefix text with style and tap callback (prefixText, prefixStyle, onPrefixTap)
  • Text with tappable and styled links (onUrlTap, urlStyle)
  • Text with tappable and styled @mentions (onMentionTap, mentionStyle)
  • Text with tappable and styled #hashtags (onHashtagTap, hashtagStyle)
  • Configure the number of visible lines of the collapsed text (maxLines)
  • Control the default expanded state (expanded, onLinkTap)
  • Callback for expanded changed event (onExpandedChanged)
  • Tap on the text to expand or collapse the text (expandOnTextTap, collapseOnTextTap)

Bugs and feature requests

Have a bug or a feature request? Please first search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.

Copyright & License

Code copyright 2020–2022 Florian Weinaug. Code released under the MIT license.

Categories

Source repository

Projects using this package