Skip to content

Commit 47cb1b4

Browse files
authored
Merge branch 'master' into master
2 parents 6e40cf9 + 48f6b70 commit 47cb1b4

File tree

18 files changed

+992
-67
lines changed

18 files changed

+992
-67
lines changed

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
1111
## [Unreleased]
1212

13+
## [11.4.2] - 2025-07-22
14+
15+
### Fixed
16+
17+
- **App crash on desktop platforms** when using Flutter `3.32.0-0.5.pre` and newer.
18+
Fixed by passing the required `viewId` for experimental multi-window support [#2579](https://github.com/singerdmx/flutter-quill/pull/2579).
19+
1320
## [11.4.1] - 2025-05-15
1421

1522
### Added
@@ -166,7 +173,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
166173
- Apple-specific font dependency for subscript and superscript functionality from the example.
167174
- **BREAKING**: The [`super_clipboard`](https://pub.dev/packages/super_clipboard) plugin, To restore legacy behavior for `super_clipboard`, use [`flutter_quill_extensions`](https://pub.dev/packages/flutter_quill_extensions) package and `FlutterQuillExtensions.useSuperClipboardPlugin()`.
168175

169-
[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.4.1...HEAD
176+
[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.4.2...HEAD
177+
[11.4.2]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.2
170178
[11.4.1]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.1
171179
[11.4.0]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.0
172180
[11.3.0]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.3.0
Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_quill/flutter_quill.dart';
13
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:flutter_quill_test/flutter_quill_test.dart';
25
import 'package:integration_test/integration_test.dart';
36

47
void main() {
58
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
69

7-
testWidgets('placeholder test', (tester) async {});
10+
testWidgets('$QuillEditor renders and handles input without crashing',
11+
(tester) async {
12+
// This test ensures that the QuillEditor can be created and accepts input
13+
// without crashing on any platform.
14+
//
15+
// Example fix: https://github.com/singerdmx/flutter-quill/pull/2579
16+
17+
final controller = QuillController.basic();
18+
await tester.pumpWidget(MaterialApp(
19+
home: QuillEditor.basic(controller: controller),
20+
));
21+
22+
// Simulate text input to trigger user interactions.
23+
await tester.quillEnterText(find.byType(QuillEditor), 'sample text\n');
24+
25+
controller.dispose();
26+
});
827
}

example/pubspec.lock

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ packages:
1313
dependency: transitive
1414
description:
1515
name: async
16-
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
16+
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
1717
url: "https://pub.dev"
1818
source: hosted
19-
version: "2.12.0"
19+
version: "2.13.0"
2020
boolean_selector:
2121
dependency: transitive
2222
description:
@@ -93,10 +93,10 @@ packages:
9393
dependency: transitive
9494
description:
9595
name: fake_async
96-
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
96+
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
9797
url: "https://pub.dev"
9898
source: hosted
99-
version: "1.3.2"
99+
version: "1.3.3"
100100
ffi:
101101
dependency: transitive
102102
description:
@@ -125,10 +125,10 @@ packages:
125125
dependency: transitive
126126
description:
127127
name: file_selector_macos
128-
sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc"
128+
sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711"
129129
url: "https://pub.dev"
130130
source: hosted
131-
version: "0.9.4+2"
131+
version: "0.9.4+3"
132132
file_selector_platform_interface:
133133
dependency: transitive
134134
description:
@@ -220,25 +220,25 @@ packages:
220220
dependency: transitive
221221
description:
222222
name: flutter_plugin_android_lifecycle
223-
sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3"
223+
sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
224224
url: "https://pub.dev"
225225
source: hosted
226-
version: "2.0.27"
226+
version: "2.0.28"
227227
flutter_quill:
228228
dependency: "direct main"
229229
description:
230230
path: ".."
231231
relative: true
232232
source: path
233-
version: "11.4.1"
233+
version: "11.4.2"
234234
flutter_quill_delta_from_html:
235235
dependency: transitive
236236
description:
237237
name: flutter_quill_delta_from_html
238-
sha256: "79405765612016de9de2361be86383360b0b43a6bf88b818c079a953583f1849"
238+
sha256: "4597bd0853a704696837aa6b05cffd851f587b176204c234edddfed1c1862a09"
239239
url: "https://pub.dev"
240240
source: hosted
241-
version: "1.5.0"
241+
version: "1.5.2"
242242
flutter_quill_extensions:
243243
dependency: "direct main"
244244
description:
@@ -272,18 +272,18 @@ packages:
272272
dependency: transitive
273273
description:
274274
name: html
275-
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
275+
sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
276276
url: "https://pub.dev"
277277
source: hosted
278-
version: "0.15.5"
278+
version: "0.15.6"
279279
http:
280280
dependency: transitive
281281
description:
282282
name: http
283-
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
283+
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
284284
url: "https://pub.dev"
285285
source: hosted
286-
version: "1.3.0"
286+
version: "1.4.0"
287287
http_parser:
288288
dependency: transitive
289289
description:
@@ -304,10 +304,10 @@ packages:
304304
dependency: transitive
305305
description:
306306
name: image_picker_android
307-
sha256: "8bd392ba8b0c8957a157ae0dc9fcf48c58e6c20908d5880aea1d79734df090e9"
307+
sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d"
308308
url: "https://pub.dev"
309309
source: hosted
310-
version: "0.8.12+22"
310+
version: "0.8.12+24"
311311
image_picker_for_web:
312312
dependency: transitive
313313
description:
@@ -365,18 +365,18 @@ packages:
365365
dependency: transitive
366366
description:
367367
name: intl
368-
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
368+
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
369369
url: "https://pub.dev"
370370
source: hosted
371-
version: "0.19.0"
371+
version: "0.20.2"
372372
leak_tracker:
373373
dependency: transitive
374374
description:
375375
name: leak_tracker
376-
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
376+
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
377377
url: "https://pub.dev"
378378
source: hosted
379-
version: "10.0.8"
379+
version: "10.0.9"
380380
leak_tracker_flutter_testing:
381381
dependency: transitive
382382
description:
@@ -509,10 +509,10 @@ packages:
509509
dependency: transitive
510510
description:
511511
name: quill_native_bridge_linux
512-
sha256: "5fcc60cab2ab9079e0746941f05c5ca5fec85cc050b738c8c8b9da7c09da17eb"
512+
sha256: "388aaa62017dbd746742ce0bfae99f4ffe1dda2462e8a866df630c67b63c54fe"
513513
url: "https://pub.dev"
514514
source: hosted
515-
version: "0.0.1"
515+
version: "0.0.2"
516516
quill_native_bridge_macos:
517517
dependency: transitive
518518
description:
@@ -541,10 +541,10 @@ packages:
541541
dependency: transitive
542542
description:
543543
name: quill_native_bridge_windows
544-
sha256: "60e50d74238f22ceb43113d9a42b6627451dab9fc27f527b979a32051cf1da45"
544+
sha256: "3f96ced19e3206ddf4f6f7dde3eb16bdd05e10294964009ea3a806d995aa7caa"
545545
url: "https://pub.dev"
546546
source: hosted
547-
version: "0.0.1"
547+
version: "0.0.2"
548548
quiver:
549549
dependency: transitive
550550
description:
@@ -626,26 +626,26 @@ packages:
626626
dependency: transitive
627627
description:
628628
name: url_launcher
629-
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
629+
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
630630
url: "https://pub.dev"
631631
source: hosted
632-
version: "6.3.1"
632+
version: "6.3.2"
633633
url_launcher_android:
634634
dependency: transitive
635635
description:
636636
name: url_launcher_android
637-
sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4"
637+
sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
638638
url: "https://pub.dev"
639639
source: hosted
640-
version: "6.3.15"
640+
version: "6.3.16"
641641
url_launcher_ios:
642642
dependency: transitive
643643
description:
644644
name: url_launcher_ios
645-
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
645+
sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
646646
url: "https://pub.dev"
647647
source: hosted
648-
version: "6.3.2"
648+
version: "6.3.3"
649649
url_launcher_linux:
650650
dependency: transitive
651651
description:
@@ -674,10 +674,10 @@ packages:
674674
dependency: transitive
675675
description:
676676
name: url_launcher_web
677-
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
677+
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
678678
url: "https://pub.dev"
679679
source: hosted
680-
version: "2.4.0"
680+
version: "2.4.1"
681681
url_launcher_windows:
682682
dependency: transitive
683683
description:
@@ -698,50 +698,50 @@ packages:
698698
dependency: transitive
699699
description:
700700
name: video_player
701-
sha256: "48941c8b05732f9582116b1c01850b74dbee1d8520cd7e34ad4609d6df666845"
701+
sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a"
702702
url: "https://pub.dev"
703703
source: hosted
704-
version: "2.9.3"
704+
version: "2.10.0"
705705
video_player_android:
706706
dependency: transitive
707707
description:
708708
name: video_player_android
709-
sha256: ae7d4f1b41e3ac6d24dd9b9d5d6831b52d74a61bdd90a7a6262a33d8bb97c29a
709+
sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73"
710710
url: "https://pub.dev"
711711
source: hosted
712-
version: "2.8.2"
712+
version: "2.8.7"
713713
video_player_avfoundation:
714714
dependency: transitive
715715
description:
716716
name: video_player_avfoundation
717-
sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc"
717+
sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953"
718718
url: "https://pub.dev"
719719
source: hosted
720-
version: "2.7.0"
720+
version: "2.8.0"
721721
video_player_platform_interface:
722722
dependency: transitive
723723
description:
724724
name: video_player_platform_interface
725-
sha256: df534476c341ab2c6a835078066fc681b8265048addd853a1e3c78740316a844
725+
sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a
726726
url: "https://pub.dev"
727727
source: hosted
728-
version: "6.3.0"
728+
version: "6.4.0"
729729
video_player_web:
730730
dependency: transitive
731731
description:
732732
name: video_player_web
733-
sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476"
733+
sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb"
734734
url: "https://pub.dev"
735735
source: hosted
736-
version: "2.3.4"
736+
version: "2.4.0"
737737
vm_service:
738738
dependency: transitive
739739
description:
740740
name: vm_service
741-
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
741+
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
742742
url: "https://pub.dev"
743743
source: hosted
744-
version: "14.3.1"
744+
version: "15.0.0"
745745
web:
746746
dependency: transitive
747747
description:
@@ -754,18 +754,18 @@ packages:
754754
dependency: transitive
755755
description:
756756
name: webdriver
757-
sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8"
757+
sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade"
758758
url: "https://pub.dev"
759759
source: hosted
760-
version: "3.0.4"
760+
version: "3.1.0"
761761
win32:
762762
dependency: transitive
763763
description:
764764
name: win32
765-
sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f
765+
sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03"
766766
url: "https://pub.dev"
767767
source: hosted
768-
version: "5.12.0"
768+
version: "5.14.0"
769769
sdks:
770-
dart: ">=3.7.0 <4.0.0"
771-
flutter: ">=3.27.0"
770+
dart: ">=3.8.0 <4.0.0"
771+
flutter: ">=3.29.0"

flutter_quill_extensions/lib/src/editor/image/image_menu.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ class ImageOptionsMenu extends StatelessWidget {
184184
content: Text(localizations.successImageSavedGallery),
185185
action: SnackBarAction(
186186
label: localizations.openGallery,
187-
onPressed: () =>
188-
QuillNativeProvider.instance.openGalleryApp(),
187+
onPressed: QuillNativeProvider.instance.openGalleryApp,
189188
),
190189
));
191190
return;

lib/src/editor/config/editor_config.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/// @docImport '../../rules/insert.dart' show AutoFormatMultipleLinksRule;
1+
/// @docImport '../../rules/insert.dart';
22
library;
33

44
import 'dart:ui' as ui;

lib/src/editor/editor.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,10 +1326,10 @@ class RenderEditor extends RenderEditableContainerBox
13261326
Offset calculateBoundedFloatingCursorOffset(
13271327
Offset rawCursorOffset, double preferredLineHeight) {
13281328
var deltaPosition = Offset.zero;
1329-
final topBound = _kFloatingCursorAddedMargin.top;
1329+
const topBound = 4.0; // _kFloatingCursorAddedMargin.top is 4.0
13301330
final bottomBound =
13311331
size.height - preferredLineHeight + _kFloatingCursorAddedMargin.bottom;
1332-
final leftBound = _kFloatingCursorAddedMargin.left;
1332+
const leftBound = 4.0; // _kFloatingCursorAddedMargin.left is 4.0
13331333
final rightBound = size.width - _kFloatingCursorAddedMargin.right;
13341334

13351335
if (_previousOffset != null) {

lib/src/editor/raw_editor/keyboard_shortcuts/editor_keyboard_shortcut_actions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class QuillEditorDeleteTextAction<T extends DirectionalTextEditingIntent>
1818
final QuillEditorTextBoundary Function(T intent) getTextBoundariesForIntent;
1919

2020
TextRange _expandNonCollapsedRange(TextEditingValue value) {
21-
final TextRange selection = value.selection;
21+
final selection = value.selection;
2222
assert(selection.isValid);
2323
assert(!selection.isCollapsed);
2424
final atomicBoundary = QuillEditorCharacterBoundary(value);

lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ mixin RawEditorStateTextInputClientMixin on EditorState
8989
allowedMimeTypes: widget.config.contentInsertionConfiguration == null
9090
? const <String>[]
9191
: widget.config.contentInsertionConfiguration!.allowedMimeTypes,
92+
viewId: View.of(context).viewId,
9293
),
9394
);
9495

0 commit comments

Comments
 (0)