From bbbb6bb4aa7305ed1044d1a0ae4e8433aa1e5542 Mon Sep 17 00:00:00 2001 From: Hamlet Jiang Su Date: Tue, 6 Aug 2024 14:32:37 -0700 Subject: [PATCH] fix: respect table column alignment --- packages/flutter_markdown/CHANGELOG.md | 4 ++++ .../flutter_markdown/lib/src/builder.dart | 10 +++++++++- packages/flutter_markdown/pubspec.yaml | 2 +- .../flutter_markdown/test/table_test.dart | 19 +++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index 2b42efadc5f..98880890d0c 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.3+1 + +* Fixes issue with table column alignments not being respected. + ## 0.7.3 * Adds horizontal scrolling for table when using `tableColumnWidth: FixedColumnWidth(width)`. diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 0706453a01d..0ec8833c42c 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -670,7 +670,15 @@ class MarkdownBuilder implements md.NodeVisitor { child: DefaultTextStyle( style: styleSheet.tableBody!, textAlign: textAlign, - child: Wrap(children: children as List), + child: Wrap( + alignment: switch (textAlign) { + TextAlign.left => WrapAlignment.start, + TextAlign.center => WrapAlignment.center, + TextAlign.right => WrapAlignment.end, + _ => WrapAlignment.start, + }, + children: children as List, + ), ), ), ); diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index ecfd21ea000..78a0ac36cfb 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.7.3 +version: 0.7.3+1 environment: sdk: ^3.3.0 diff --git a/packages/flutter_markdown/test/table_test.dart b/packages/flutter_markdown/test/table_test.dart index c67944ee0c3..9a7a4daf87e 100644 --- a/packages/flutter_markdown/test/table_test.dart +++ b/packages/flutter_markdown/test/table_test.dart @@ -63,6 +63,25 @@ void defineTests() { }, ); + testWidgets( + 'should work with table alignments', + (WidgetTester tester) async { + const String data = + '|Header 1|Header 2|Header 3|\n|:----|:----:|----:|\n|Col 1|Col 2|Col 3|'; + await tester.pumpWidget( + boilerplate( + const MarkdownBody(data: data), + ), + ); + + final Iterable wraps = tester.widgetList(find.byType(Wrap)); + + expect(wraps.first.alignment, WrapAlignment.start); + expect(wraps.elementAt(1).alignment, WrapAlignment.center); + expect(wraps.last.alignment, WrapAlignment.end); + }, + ); + testWidgets( 'should work with styling', (WidgetTester tester) async {