[flutter_markdown] Fix horizontal sizing of lists in MarkdownBody (#2413)
diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md
index ebb7b04..78e58d1 100644
--- a/packages/flutter_markdown/CHANGELOG.md
+++ b/packages/flutter_markdown/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.12
+
+* Markdown Lists now take into account `fitContent` instead of always expanding to the maximum horizontally ([flutter/flutter#108976](https://github.com/flutter/flutter/issues/108976)).
+
## 0.6.11
* Deprecates and removes use of `TaskListSyntax` as new markdown package supports checkboxes natively.
diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart
index 20809eb..30e4a55 100644
--- a/packages/flutter_markdown/lib/src/builder.dart
+++ b/packages/flutter_markdown/lib/src/builder.dart
@@ -392,6 +392,7 @@
bullet = _buildBullet(_listIndents.last);
}
child = Row(
+ mainAxisSize: fitContent ? MainAxisSize.min : MainAxisSize.max,
textBaseline: listItemCrossAxisAlignment ==
MarkdownListItemCrossAxisAlignment.start
? null
@@ -407,7 +408,10 @@
styleSheet.listBulletPadding!.right,
child: bullet,
),
- Expanded(child: child)
+ Flexible(
+ fit: fitContent ? FlexFit.loose : FlexFit.tight,
+ child: child,
+ )
],
);
}
diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml
index 19a678f..ec3bcaf 100644
--- a/packages/flutter_markdown/pubspec.yaml
+++ b/packages/flutter_markdown/pubspec.yaml
@@ -4,7 +4,7 @@
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.6.11
+version: 0.6.12
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/flutter_markdown/test/list_test.dart b/packages/flutter_markdown/test/list_test.dart
index f3f8aa7..4c0061f 100644
--- a/packages/flutter_markdown/test/list_test.dart
+++ b/packages/flutter_markdown/test/list_test.dart
@@ -186,4 +186,52 @@
},
);
});
+
+ group('fitContent', () {
+ testWidgets(
+ 'uses maximum width when false',
+ (WidgetTester tester) async {
+ const String data = '- Foo\n- Bar';
+
+ await tester.pumpWidget(
+ boilerplate(
+ Column(
+ children: const <Widget>[
+ MarkdownBody(fitContent: false, data: data),
+ ],
+ ),
+ ),
+ );
+
+ final double screenWidth = tester.allElements.first.size!.width;
+ final double markdownBodyWidth =
+ find.byType(MarkdownBody).evaluate().single.size!.width;
+
+ expect(markdownBodyWidth, equals(screenWidth));
+ },
+ );
+
+ testWidgets(
+ 'uses minimum width when true',
+ (WidgetTester tester) async {
+ const String data = '- Foo\n- Bar';
+
+ await tester.pumpWidget(
+ boilerplate(
+ Column(
+ children: const <Widget>[
+ MarkdownBody(data: data),
+ ],
+ ),
+ ),
+ );
+
+ final double screenWidth = tester.allElements.first.size!.width;
+ final double markdownBodyWidth =
+ find.byType(MarkdownBody).evaluate().single.size!.width;
+
+ expect(markdownBodyWidth, lessThan(screenWidth));
+ },
+ );
+ });
}