From 99d755f275dc12b518ad5cd3de91fe9257d2174a Mon Sep 17 00:00:00 2001 From: Alan Mantoux Date: Sun, 20 Jul 2025 10:10:28 +0200 Subject: [PATCH] Re-initialized ordered list index when no current index available --- .../lib/src/widgets/editable_text_block.dart | 3 ++- .../test/widgets/editable_text_test.dart | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/fleather/lib/src/widgets/editable_text_block.dart b/packages/fleather/lib/src/widgets/editable_text_block.dart index c1b325a7..03f900e1 100644 --- a/packages/fleather/lib/src/widgets/editable_text_block.dart +++ b/packages/fleather/lib/src/widgets/editable_text_block.dart @@ -157,7 +157,8 @@ class EditableTextBlock extends StatelessWidget { if (lastLevel == currentLevel) { currentIndex = levelsIndexes[lastLevel]! + 1; } else if (lastLevel > currentLevel) { - currentIndex = levelsIndexes[currentLevel]! + 1; + final currentLevelIndex = levelsIndexes[currentLevel]; + currentIndex = currentLevelIndex == null ? 0 : currentLevelIndex + 1; } } diff --git a/packages/fleather/test/widgets/editable_text_test.dart b/packages/fleather/test/widgets/editable_text_test.dart index e20a9667..00bc2f34 100644 --- a/packages/fleather/test/widgets/editable_text_test.dart +++ b/packages/fleather/test/widgets/editable_text_test.dart @@ -137,6 +137,22 @@ void main() { await editor.pump(); expect(find.text('1.', findRichText: true), findsOneWidget); }); + + testWidgets('multi list', (tester) async { + final delta = Delta() + ..insert('numbered1') + ..insert('\n', {'block': 'ol'}) + ..insert('bullet_with_indent') + ..insert('\n', {'block': 'ul', 'indent': 1}) + ..insert('numbered_with_more_indent') + ..insert('\n', {'block': 'ol', 'indent': 2}) + ..insert('numbered_with_indent') + ..insert('\n', {'block': 'ol', 'indent': 1}); + final editor = EditorSandBox( + tester: tester, document: ParchmentDocument.fromDelta(delta)); + await editor.pump(); + expect(find.text('1.', findRichText: true), findsNWidgets(3)); + }); }); testWidgets('headings', (tester) async {