float_column
Flutter FloatColumn widget for building a vertical column of widgets and text where the text wraps around floated widgets, similar to how CSS float works.
4.1.0
5.7K downloads/mo
#3653 most downloaded on pub.dev
ronjb/float_column
What this package is like to depend on
Last release 1 months ago
03 Jul 2026
Release timing varies
gaps range from 2 weeks to 1.3 years
Nearly every release is documented
notes for 40 of 40 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
44 releases · first in 2021
1 release in the last 12 months
see the full history below
Release timeline
44 releases · Apr 2021 to Jul 2026Releases
latest 44-
4.1.003 Jul 2026Release notes
Open source →- Fixed a bug where text that wrapped around floated widgets ignored the ambient MediaQuery text scaler, breaking accessibility font scaling for the wrapped portion of the paragraph.
- Fixed a crash when a WrappableText with a non-null maxLines started with one or more line feeds. Leading line feeds now render like they do in a Text widget.
- Fixed a crash when a floated inline widget was beyond the point where its paragraph was truncated by maxLines. Truncated floated widgets are now hidden, consistent with the rest of the truncated content.
- Fixed a bug where floated inline widgets were positioned 5 pixels above the top of their anchor line, which could cause a float on the first line to paint above the top edge of the FloatColumn.
- Floated children now honor their full margin box, like CSS: margin.top and margin.bottom offset the float vertically, and sibling content wraps around the margin box instead of directly against the padding box.
- Fixed duplicate key detection, which previously did not detect duplicate keys on widget children.
- Keyed widget children now preserve their state when reordered.
- When a text span is split (to wrap around floated widgets), its semanticsLabel is now kept on the first part only, so assistive technologies announce it once instead of once per part. Also fixed a debug-mode crash when splitting a span with a semanticsLabel at the boundary between its text and its children.
- In debug mode, querying a FloatColumn's intrinsic dimensions now throws a descriptive error instead of silently collapsing the column to zero size.
- Improved layout performance for paragraphs that do not contain floated inline widgets.
- Updated the README with accurate, compile-checked examples, including floated widgets in WidgetSpans.
- Added tests covering text scaling, maxLines edge cases, float positioning and margins, key handling, semanticsLabel splitting, and intrinsic sizing.
Release notes
Open source →- Fixed a bug where text that wrapped around floated widgets ignored the ambient
MediaQuerytext scaler, breaking accessibility font scaling for the wrapped portion of the paragraph. - Fixed a crash when a
WrappableTextwith a non-nullmaxLinesstarted with one or more line feeds. Leading line feeds now render like they do in aTextwidget. - Fixed a crash when a floated inline widget was beyond the point where its paragraph was truncated by
maxLines. Truncated floated widgets are now hidden, consistent with the rest of the truncated content. - Fixed a bug where floated inline widgets were positioned 5 pixels above the top of their anchor line, which could cause a float on the first line to paint above the top edge of the
FloatColumn. - Floated children now honor their full margin box, like CSS:
margin.topandmargin.bottomoffset the float vertically, and sibling content wraps around the margin box instead of directly against the padding box. Previously, vertical margins on floated children were silently ignored. If you set margins on floated children, their layout will change accordingly. - Fixed duplicate key detection, which previously did not detect duplicate keys on widget children.
- Keyed widget children now preserve their state when reordered.
- When a text span is split (to wrap around floated widgets), its
semanticsLabelis now kept on the first part only, so assistive technologies announce it once instead of once per part. Also fixed a debug-mode crash when splitting a span with asemanticsLabelat the boundary between its text and its children. - In debug mode, querying a
FloatColumn's intrinsic dimensions (e.g. wrapping it inIntrinsicHeightorIntrinsicWidth) now throws a descriptive error instead of silently collapsing the column to zero size. Intrinsic dimensions cannot be computed efficiently because they would require laying out the text and floated children. - Improved layout performance for paragraphs that do not contain floated inline widgets.
-
4.0.324 Mar 2025Release notes
Open source →- Updated so that in addition to
style, the rest of the current context's DefaultTextStyle properties are provided to child text widgets (textAlign,overflow,maxLines,textWidthBasis, andtextHeightBehavior).
- Updated so that in addition to
-
4.0.210 Mar 2025Release notes
Open source →- Fixed off-by-one error in the InlineSpan extension method
defaultSplitSpanAtIndex.
- Fixed off-by-one error in the InlineSpan extension method
-
4.0.126 Feb 2025 -
4.0.026 Feb 2025Release notes
Open source →Refactored the code to utilize RichText widgets for rendering floated text instead of internally rendering it using TextPainters. This change offers several advantages, including reduced dependency on Flutter’s internal implementation of RenderParagraph and related selection features. Specifically, it enhances support for Flutter’s text selection capabilities, ensures compatibility with a wider range of Flutter versions, and significantly reduces code size by approximately one-third.
-
3.0.012 Feb 2025Release notes
Open source →- Added two new required methods to SelectableFragment class:
int get contentLengthandSelectedContentRange? getSelection(). These two new methods are defined in Flutter 3.29.0, so it is a breaking change. - Updated pubspec.yaml to depend on
flutter: '>=3.29.0'.
- Added two new required methods to SelectableFragment class:
-
2.1.807 Aug 2024 -
2.1.707 Aug 2024 -
2.1.627 Jun 2024Release notes
Open source →- Updated TextRenderer to handle the case where
_painter.textis null to avoid a possible exception.
- Updated TextRenderer to handle the case where
-
2.1.517 Feb 2024 -
2.1.416 Feb 2024 -
2.1.316 Feb 2024 -
2.1.216 Feb 2024Release notes
Open source →- Fixed compile issue with Flutter 3.19.0 and other bug fixes and updates.
-
2.1.2-dev.115 Feb 2024 pre-releaseNothing published for this version
-
2.1.117 Aug 2023Release notes
Open source →- Fixed bug where if a Widget in a WidgetSpan changes its size, FloatColumn was not updating properly.
-
2.1.016 Aug 2023 -
2.0.127 May 2023Release notes
Open source →- Fixed bug related to
maxLinesbeing set to a value greater than 1, andoverflowbeing set toTextOverflow.ellipsis, where the text would not be layed out correctly.
- Fixed bug related to
-
2.0.011 May 2023 -
1.4.109 Feb 2023Release notes
Open source →- Updated how text renderers are cached for quicker access.
- Some code cleanup to RenderFloatColumn
hitTestChildrenand other code cleanup.
-
1.4.006 Feb 2023 -
1.3.317 Jan 2023Release notes
Open source →- Added a
copyWithTextSpanparameter to thedefaultSplitSpanAtIndexextension method on theInlineSpanclass.
- Added a
-
1.3.217 Jan 2023Release notes
Open source →- Added optional an
bool ignoreFloatedWidgetSpans = falseparameter to thesplitAtandsplitAtIndexmethods ofSplittableMixin.
- Added optional an
-
1.3.110 Dec 2022 -
1.3.007 Jul 2022Release notes
Open source →- Updated
FloatColumnto support children of typeTextSpan,Text, andRichText.
- Updated
-
1.2.406 Jul 2022 -
1.2.328 Jun 2022Release notes
Open source →- Fixed bug in the RenderObject extension method
visitChildrenAndTextRenderers. It would not recursively visit children withVisitChildrenOfAnyTypeMixin. Now it does.
- Fixed bug in the RenderObject extension method
-
1.2.202 Jun 2022Release notes
Open source →- Code updates to fix warnings related to Flutter 3.0 release.
- Fixed bug related to when
markNeedsSemanticsUpdateis called. Since it can immediately result in a call todescribeSemanticsConfiguration, it needed to be moved outside of the loop updating the cached WrappableTextRenderer list.
-
1.2.115 Nov 2021Release notes
Open source →- Fixed bug in RenderFloatColumn assembleSemanticsNode, it was using the
[]operator of WrappableTextRenderer, when it should have been using therenderersgetter.
- Fixed bug in RenderFloatColumn assembleSemanticsNode, it was using the
-
1.2.015 Nov 2021Release notes
Open source →- Fixed #3 "WrappableText objects that contain TextSpans that have a recognizer (e.g. TapGestureRecognizer) aren't handled correctly, i.e. the recognizer is ignored for hit tests."
- Updated RenderFloatColumn to support standard
describeSemanticsConfigurationandassembleSemanticsNodemethods.
-
1.1.214 Nov 2021Release notes
Open source →- Fixed bug in RenderFloatColumn
visitChildrenOfAnyType. - Added example Mac app, and updated examples.
- Fixed bug in RenderFloatColumn
-
1.1.109 Sep 2021Release notes
Open source →- Updated to use
flutter_lints_pluspackage and fix Flutter 2.5 lint warnings.
- Updated to use
-
1.1.006 Jul 2021Release notes
Open source →- Added support for floated inline widgets using WidgetSpan with Floatable child.
-
1.0.204 Jul 2021Release notes
Open source →- Added code that shows overflow area and size in case of height overflow.
-
1.0.104 Jul 2021Release notes
Open source →- Fixed bug where the layout was incorrect in some cases if line-feed characters were in the text.
-
1.0.027 Jun 2021 -
0.1.507 May 2021 -
0.1.407 May 2021 -
0.1.302 May 2021 -
0.1.202 May 2021Release notes
Open source →- Added support for visiting the children (render objects and text renderers) of a RenderFloatColumn, via the
visitChildrenOfAnyTypefunction. - Added support for getting detailed info about each text renderer child (via the
RenderTextMixin), similar to RenderParagraph. - Fixed a bug relating to WrappableText and unique keys.
- Added support for visiting the children (render objects and text renderers) of a RenderFloatColumn, via the
-
0.1.101 May 2021 -
0.1.026 Apr 2021 -
0.1.0-dev.326 Apr 2021 pre-releaseRelease notes
Open source →- Fixed a bug where a child widget with a width of zero would cause an exception.
-
0.1.0-dev.226 Apr 2021 pre-releaseRelease notes
Open source →- Fixed a bug where a child widget with an unconstrained width would cause an exception.
-
0.1.0-dev.126 Apr 2021 pre-releaseRelease notes
Open source →- Prerelease version with basic functionality, and probably a lot of bugs.