From dd0aa296f681b733cd3eb9e3d8be8106a50f913a Mon Sep 17 00:00:00 2001 From: Adil Hanney Date: Sat, 18 Oct 2025 19:16:56 +0100 Subject: [PATCH 01/22] fix: viewId when no View in context (#2662) * fix: viewId when no View in context * docs(changelog): add PR link --------- Co-authored-by: Ellet --- CHANGELOG.md | 4 ++++ lib/src/common/extensions/view_id_ext.dart | 11 +++++++++++ .../raw_editor_state_text_input_client_mixin.dart | 3 ++- lib/src/editor/raw_editor/scribble_focusable.dart | 12 ++++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 lib/src/common/extensions/view_id_ext.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index c9ff048a3..8dc84de34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Fixed `View.of(context)` calls throwing when used with the `screenshot` package [#2662](https://github.com/singerdmx/flutter-quill/pull/2662). + ## [11.4.2] - 2025-07-22 ### Fixed diff --git a/lib/src/common/extensions/view_id_ext.dart b/lib/src/common/extensions/view_id_ext.dart new file mode 100644 index 000000000..dd941669e --- /dev/null +++ b/lib/src/common/extensions/view_id_ext.dart @@ -0,0 +1,11 @@ +import 'package:flutter/widgets.dart'; + +extension ViewIdExt on BuildContext { + int? getViewId() { + late final platformDispatcher = WidgetsBinding.instance.platformDispatcher; + return View.maybeOf(this)?.viewId ?? + // If context has no View, check platformDispatcher + platformDispatcher.views.firstOrNull?.viewId ?? + platformDispatcher.implicitView?.viewId; + } +} diff --git a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart index 5857bcf00..70310c8f3 100644 --- a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart +++ b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart @@ -7,6 +7,7 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; +import '../../common/extensions/view_id_ext.dart'; import '../../delta/delta_diff.dart'; import '../../document/document.dart'; import '../editor.dart'; @@ -89,7 +90,7 @@ mixin RawEditorStateTextInputClientMixin on EditorState allowedMimeTypes: widget.config.contentInsertionConfiguration == null ? const [] : widget.config.contentInsertionConfiguration!.allowedMimeTypes, - viewId: View.of(context).viewId, + viewId: context.getViewId(), ), ); diff --git a/lib/src/editor/raw_editor/scribble_focusable.dart b/lib/src/editor/raw_editor/scribble_focusable.dart index 8436d2de6..a83188f9c 100644 --- a/lib/src/editor/raw_editor/scribble_focusable.dart +++ b/lib/src/editor/raw_editor/scribble_focusable.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; +import '../../common/extensions/view_id_ext.dart'; + class ScribbleFocusable extends StatefulWidget { const ScribbleFocusable({ required this.child, @@ -87,10 +89,16 @@ class _ScribbleFocusableState extends State if (!calculatedBounds.overlaps(rect)) { return false; } + + final viewId = context.getViewId(); + if (viewId == null) { + // Can't perform hit testing without a viewId + return false; + } + final intersection = calculatedBounds.intersect(rect); final result = HitTestResult(); - WidgetsBinding.instance - .hitTestInView(result, intersection.center, View.of(context).viewId); + WidgetsBinding.instance.hitTestInView(result, intersection.center, viewId); return result.path.any((entry) => entry.target == _renderBoxForEditor || entry.target == _renderBoxForBounds); From 74f75b117bdb49872bd8ee8e407540e8abaead88 Mon Sep 17 00:00:00 2001 From: Jakam - Gabriel Siqueira <47793562+gabrielsso@users.noreply.github.com> Date: Sat, 18 Oct 2025 15:22:10 -0300 Subject: [PATCH 02/22] Updated Brazilian Portuguese translations (#2638) * Added pt-br translations * changelog * Ajuste texto --------- Co-authored-by: Gabriel Siqueira Soares Co-authored-by: Ellet --- CHANGELOG.md | 4 ++ .../generated/quill_localizations_pt.dart | 48 +++++++++++++++---- lib/src/l10n/quill_pt_br.arb | 29 +++++++---- lib/src/l10n/untranslated.json | 12 ----- 4 files changed, 62 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dc84de34..889bc2b8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed `View.of(context)` calls throwing when used with the `screenshot` package [#2662](https://github.com/singerdmx/flutter-quill/pull/2662). +### Added + +- Add missing Brazilian Portuguese translations + ## [11.4.2] - 2025-07-22 ### Fixed diff --git a/lib/src/l10n/generated/quill_localizations_pt.dart b/lib/src/l10n/generated/quill_localizations_pt.dart index 268a22cf1..9fe0d90d0 100644 --- a/lib/src/l10n/generated/quill_localizations_pt.dart +++ b/lib/src/l10n/generated/quill_localizations_pt.dart @@ -546,19 +546,19 @@ class FlutterQuillLocalizationsPtBr extends FlutterQuillLocalizationsPt { String get lineheight => 'Altura da linha'; @override - String get findText => 'Find text'; + String get findText => 'Achar texto'; @override - String get moveToPreviousOccurrence => 'Move to previous occurrence'; + String get moveToPreviousOccurrence => 'Voltar para a ocorrência anterior'; @override - String get moveToNextOccurrence => 'Move to next occurrence'; + String get moveToNextOccurrence => 'Ir para a próxima ocorrência'; @override - String get savedUsingTheNetwork => 'Saved using the network'; + String get savedUsingTheNetwork => 'Salvo pela rede'; @override - String get savedUsingLocalStorage => 'Saved using the local storage'; + String get savedUsingLocalStorage => 'Salvo localmente'; @override String theImageHasBeenSavedAt(String imagePath) { @@ -566,16 +566,17 @@ class FlutterQuillLocalizationsPtBr extends FlutterQuillLocalizationsPt { } @override - String get errorWhileSavingImage => 'Error while saving image'; + String get errorWhileSavingImage => 'Erro ao salvar a imagem'; @override - String get pleaseEnterTextForYourLink => 'e.g., \'Learn more\''; + String get pleaseEnterTextForYourLink => 'Ex.: \'Saiba mais\''; @override - String get pleaseEnterTheLinkURL => 'e.g., \'https://example.com\''; + String get pleaseEnterTheLinkURL => 'Ex.: \'https://example.com\''; @override - String get pleaseEnterAValidImageURL => 'Please enter a valid image URL'; + String get pleaseEnterAValidImageURL => + 'Por favor, insira uma URL de imagem válida'; @override String get pleaseEnterAValidVideoURL => @@ -632,4 +633,33 @@ class FlutterQuillLocalizationsPtBr extends FlutterQuillLocalizationsPt { @override String get insertTable => 'Inserir tabela'; + + @override + String get insertVideo => 'Inserir vídeo'; + + @override + String get errorUnexpectedSavingImage => + 'Ocorreu um erro inesperado ao salvar a imagem'; + + @override + String get successImageSavedGallery => 'Imagem salva na sua galeria'; + + @override + String get successImageSaved => 'Imagem salva com sucesso'; + + @override + String get successImageDownloaded => 'Imagem baixada com sucesso'; + + @override + String get openGallery => 'Abrir galeria'; + + @override + String get openFileLocation => 'Abrir diretório do arquivo'; + + @override + String get openFile => 'Abrir arquivo'; + + @override + String get saveImagePermissionDenied => + 'Não foi possível salvar a imagem devido à falta de permissão'; } diff --git a/lib/src/l10n/quill_pt_br.arb b/lib/src/l10n/quill_pt_br.arb index 87a3e0c9e..d56275ce7 100644 --- a/lib/src/l10n/quill_pt_br.arb +++ b/lib/src/l10n/quill_pt_br.arb @@ -57,15 +57,15 @@ "enterMedia": "Inserir mídia", "edit": "Editar", "apply": "Aplicar", - "findText": "Find text", - "moveToPreviousOccurrence": "Move to previous occurrence", - "moveToNextOccurrence": "Move to next occurrence", - "savedUsingTheNetwork": "Saved using the network", - "savedUsingLocalStorage": "Saved using the local storage", - "errorWhileSavingImage": "Error while saving image", - "pleaseEnterTextForYourLink": "e.g., 'Learn more'", - "pleaseEnterTheLinkURL": "e.g., 'https://example.com'", - "pleaseEnterAValidImageURL": "Please enter a valid image URL", + "findText": "Encontrar texto", + "moveToPreviousOccurrence": "Voltar para a ocorrência anterior", + "moveToNextOccurrence": "Ir para a próxima ocorrência", + "savedUsingTheNetwork": "Salvo pela rede", + "savedUsingLocalStorage": "Salvo localmente", + "errorWhileSavingImage": "Erro ao salvar a imagem", + "pleaseEnterTextForYourLink": "Ex.: 'Saiba mais'", + "pleaseEnterTheLinkURL": "Ex.: 'https://example.com'", + "pleaseEnterAValidImageURL": "Por favor, insira uma URL de imagem válida", "hex": "Hex", "material": "Material", "color": "Cor", @@ -96,5 +96,14 @@ "searchSettings": "Configurações de pesquisa", "cut": "Cortar", "paste": "Colar", - "insertTable": "Inserir tabela" + "insertTable": "Inserir tabela", + "insertVideo": "Inserir vídeo", + "errorUnexpectedSavingImage": "Ocorreu um erro inesperado ao salvar a imagem", + "successImageSavedGallery": "Imagem salva na sua galeria", + "successImageSaved": "Imagem salva com sucesso", + "successImageDownloaded": "Imagem baixada com sucesso", + "openGallery": "Abrir galeria", + "openFileLocation": "Abrir diretório do arquivo", + "openFile": "Abrir arquivo", + "saveImagePermissionDenied": "Não foi possível salvar a imagem devido à falta de permissão" } diff --git a/lib/src/l10n/untranslated.json b/lib/src/l10n/untranslated.json index 8d765eb46..3591fbcb9 100644 --- a/lib/src/l10n/untranslated.json +++ b/lib/src/l10n/untranslated.json @@ -334,18 +334,6 @@ "saveImagePermissionDenied" ], - "pt_BR": [ - "insertVideo", - "errorUnexpectedSavingImage", - "successImageSavedGallery", - "successImageSaved", - "successImageDownloaded", - "openGallery", - "openFileLocation", - "openFile", - "saveImagePermissionDenied" - ], - "ro": [ "insertVideo", "errorUnexpectedSavingImage", From 9641f2cb35671673c513ad552a1f01c1e788a59d Mon Sep 17 00:00:00 2001 From: Ellet Date: Sat, 18 Oct 2025 21:24:30 +0300 Subject: [PATCH 03/22] chore: format files with newer Dart formatter, upgrade deps --- example/pubspec.lock | 20 +++--- .../common/structs/horizontal_spacing.dart | 4 +- lib/src/common/structs/vertical_spacing.dart | 4 +- lib/src/editor/widgets/default_styles.dart | 2 +- lib/src/editor/widgets/text/magnifier.dart | 7 +- lib/src/editor/widgets/text/text_block.dart | 68 +++++++++---------- .../generated/quill_localizations_pt.dart | 2 +- 7 files changed, 52 insertions(+), 55 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index 1302b05b4..39ed46286 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -373,26 +373,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -610,10 +610,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" typed_data: dependency: transitive description: @@ -690,10 +690,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" video_player: dependency: transitive description: diff --git a/lib/src/common/structs/horizontal_spacing.dart b/lib/src/common/structs/horizontal_spacing.dart index d1beda8d5..cfee0715a 100644 --- a/lib/src/common/structs/horizontal_spacing.dart +++ b/lib/src/common/structs/horizontal_spacing.dart @@ -25,9 +25,7 @@ class HorizontalSpacing { @override bool operator ==(Object other) => identical(this, other) || - other is HorizontalSpacing && - left == other.left && - right == other.right; + other is HorizontalSpacing && left == other.left && right == other.right; @override int get hashCode => Object.hash(left, right); diff --git a/lib/src/common/structs/vertical_spacing.dart b/lib/src/common/structs/vertical_spacing.dart index 2c0398117..50994a592 100644 --- a/lib/src/common/structs/vertical_spacing.dart +++ b/lib/src/common/structs/vertical_spacing.dart @@ -25,9 +25,7 @@ class VerticalSpacing { @override bool operator ==(Object other) => identical(this, other) || - other is VerticalSpacing && - top == other.top && - bottom == other.bottom; + other is VerticalSpacing && top == other.top && bottom == other.bottom; @override int get hashCode => Object.hash(top, bottom); diff --git a/lib/src/editor/widgets/default_styles.dart b/lib/src/editor/widgets/default_styles.dart index 87636f63c..8b3255327 100644 --- a/lib/src/editor/widgets/default_styles.dart +++ b/lib/src/editor/widgets/default_styles.dart @@ -207,7 +207,7 @@ class DefaultListBlockStyle extends DefaultTextBlockStyle { checkboxUIBuilder ?? this.checkboxUIBuilder, indentWidthBuilder: indentWidthBuilder ?? this.indentWidthBuilder, numberPointWidthBuilder: - numberPointWidthBuilder ?? this.numberPointWidthBuilder, + numberPointWidthBuilder ?? this.numberPointWidthBuilder, ); } } diff --git a/lib/src/editor/widgets/text/magnifier.dart b/lib/src/editor/widgets/text/magnifier.dart index add2dc2b2..2df9f7073 100644 --- a/lib/src/editor/widgets/text/magnifier.dart +++ b/lib/src/editor/widgets/text/magnifier.dart @@ -6,7 +6,7 @@ Widget defaultQuillMagnifierBuilder(Offset dragPosition) => QuillMagnifier(dragPosition: dragPosition); class QuillMagnifier extends StatelessWidget { - const QuillMagnifier({required this.dragPosition, super.key}); + const QuillMagnifier({required this.dragPosition, super.key}); final Offset dragPosition; @@ -18,12 +18,13 @@ class QuillMagnifier extends StatelessWidget { left: position.dx, child: Container( decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), + borderRadius: BorderRadius.circular(20), ), child: RawMagnifier( clipBehavior: Clip.hardEdge, decoration: MagnifierDecoration( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), shadows: const [ BoxShadow( color: Colors.black26, diff --git a/lib/src/editor/widgets/text/text_block.dart b/lib/src/editor/widgets/text/text_block.dart index 01a4208e4..47b5e0146 100644 --- a/lib/src/editor/widgets/text/text_block.dart +++ b/lib/src/editor/widgets/text/text_block.dart @@ -176,40 +176,40 @@ class EditableTextBlock extends StatelessWidget { for (final line in Iterable.castFrom(block.children)) { index++; final editableTextLine = EditableTextLine( - line, - _buildLeading( - context: context, - line: line, - index: index, - indentLevelCounts: indentLevelCounts, - count: count, - ), - TextLine( - line: line, - textDirection: textDirection, - embedBuilder: embedBuilder, - textSpanBuilder: textSpanBuilder, - customStyleBuilder: customStyleBuilder, - styles: styles!, - readOnly: readOnly, - controller: controller, - linkActionPicker: linkActionPicker, - onLaunchUrl: onLaunchUrl, - customLinkPrefixes: customLinkPrefixes, - customRecognizerBuilder: customRecognizerBuilder, - composingRange: composingRange, - ), - indentWidthBuilder(block, context, count, numberPointWidthBuilder), - _getSpacingForLine(line, index, count, defaultStyles), - textDirection, - textSelection, - color, - enableInteractiveSelection, - hasFocus, - MediaQuery.devicePixelRatioOf(context), - cursorCont, - styles!.inlineCode!, - null); + line, + _buildLeading( + context: context, + line: line, + index: index, + indentLevelCounts: indentLevelCounts, + count: count, + ), + TextLine( + line: line, + textDirection: textDirection, + embedBuilder: embedBuilder, + textSpanBuilder: textSpanBuilder, + customStyleBuilder: customStyleBuilder, + styles: styles!, + readOnly: readOnly, + controller: controller, + linkActionPicker: linkActionPicker, + onLaunchUrl: onLaunchUrl, + customLinkPrefixes: customLinkPrefixes, + customRecognizerBuilder: customRecognizerBuilder, + composingRange: composingRange, + ), + indentWidthBuilder(block, context, count, numberPointWidthBuilder), + _getSpacingForLine(line, index, count, defaultStyles), + textDirection, + textSelection, + color, + enableInteractiveSelection, + hasFocus, + MediaQuery.devicePixelRatioOf(context), + cursorCont, + styles!.inlineCode!, + null); final nodeTextDirection = getDirectionOfNode(line, textDirection); children.add( Directionality( diff --git a/lib/src/l10n/generated/quill_localizations_pt.dart b/lib/src/l10n/generated/quill_localizations_pt.dart index 9fe0d90d0..0a4a73d0a 100644 --- a/lib/src/l10n/generated/quill_localizations_pt.dart +++ b/lib/src/l10n/generated/quill_localizations_pt.dart @@ -546,7 +546,7 @@ class FlutterQuillLocalizationsPtBr extends FlutterQuillLocalizationsPt { String get lineheight => 'Altura da linha'; @override - String get findText => 'Achar texto'; + String get findText => 'Encontrar texto'; @override String get moveToPreviousOccurrence => 'Voltar para a ocorrência anterior'; From a71c7e763651a8c0f393fd63aeb5d7a764e24fec Mon Sep 17 00:00:00 2001 From: Ellet Date: Sat, 18 Oct 2025 21:24:56 +0300 Subject: [PATCH 04/22] chore(release): prepare to publish 11.5.0 --- CHANGELOG.md | 5 ++++- example/pubspec.lock | 2 +- pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 889bc2b8d..d799278d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [11.5.0] - 2025-10-18 + ### Fixed - Fixed `View.of(context)` calls throwing when used with the `screenshot` package [#2662](https://github.com/singerdmx/flutter-quill/pull/2662). @@ -181,7 +183,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Apple-specific font dependency for subscript and superscript functionality from the example. - **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()`. -[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.4.2...HEAD +[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.5.0...HEAD +[11.5.0]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.5.0 [11.4.2]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.2 [11.4.1]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.1 [11.4.0]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.0 diff --git a/example/pubspec.lock b/example/pubspec.lock index 39ed46286..46345c442 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -230,7 +230,7 @@ packages: path: ".." relative: true source: path - version: "11.4.2" + version: "11.5.0" flutter_quill_delta_from_html: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index b08a3a04d..ea686e142 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_quill description: "A rich text editor built for Android, iOS, Web, and desktop platforms. It's the WYSIWYG editor and a Quill component for Flutter." -version: 11.4.2 +version: 11.5.0 homepage: https://github.com/singerdmx/flutter-quill/ repository: https://github.com/singerdmx/flutter-quill/ issue_tracker: https://github.com/singerdmx/flutter-quill/issues/ From 0794e7b99aec09cbb78d14e8cd2257075c9cf963 Mon Sep 17 00:00:00 2001 From: Ellet Date: Sat, 18 Oct 2025 21:27:14 +0300 Subject: [PATCH 05/22] chore: dart fix --apply --- .../lib/src/editor/image/image_save_utils.dart | 1 - .../raw_editor/raw_editor_state_text_input_client_mixin.dart | 1 - lib/src/editor/widgets/link.dart | 1 - 3 files changed, 3 deletions(-) diff --git a/flutter_quill_extensions/lib/src/editor/image/image_save_utils.dart b/flutter_quill_extensions/lib/src/editor/image/image_save_utils.dart index 5203c999c..7024d93d9 100644 --- a/flutter_quill_extensions/lib/src/editor/image/image_save_utils.dart +++ b/flutter_quill_extensions/lib/src/editor/image/image_save_utils.dart @@ -5,7 +5,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_quill/internal.dart'; -import 'package:meta/meta.dart'; import 'package:path/path.dart' as p; import 'image_load_utils.dart'; diff --git a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart index 70310c8f3..bbd3837e0 100644 --- a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart +++ b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart @@ -5,7 +5,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; -import 'package:meta/meta.dart'; import '../../common/extensions/view_id_ext.dart'; import '../../delta/delta_diff.dart'; diff --git a/lib/src/editor/widgets/link.dart b/lib/src/editor/widgets/link.dart index 6338f4a8d..c15ee0a91 100644 --- a/lib/src/editor/widgets/link.dart +++ b/lib/src/editor/widgets/link.dart @@ -1,7 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:meta/meta.dart'; import '../../controller/quill_controller.dart'; import '../../document/attribute.dart'; From e14689b74fc8c7554a367ee55f4021ba9ceb9b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=B0=D1=82=D0=BC=D1=8D=D0=BD=D0=B4=20=D0=93=D0=B0?= =?UTF-8?q?=D0=BD=D0=B1=D0=B0=D0=B0=D1=82=D0=B0=D1=80?= Date: Mon, 20 Oct 2025 18:02:48 +0800 Subject: [PATCH 06/22] l10n: support mn locale (#2673) * feat(l10n): support mn locale * docs: update changelog --- CHANGELOG.md | 4 + doc/translation.md | 4 +- .../l10n/generated/quill_localizations.dart | 5 + .../generated/quill_localizations_mn.dart | 336 ++++++++++++++++++ lib/src/l10n/quill_mn.arb | 146 ++++++++ 5 files changed, 493 insertions(+), 2 deletions(-) create mode 100644 lib/src/l10n/generated/quill_localizations_mn.dart create mode 100644 lib/src/l10n/quill_mn.arb diff --git a/CHANGELOG.md b/CHANGELOG.md index d799278d0..e312efc51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added localization support for `mn` (Mongolian, Mongolia) + ## [11.5.0] - 2025-10-18 ### Fixed diff --git a/doc/translation.md b/doc/translation.md index 416ea2f93..43c429519 100644 --- a/doc/translation.md +++ b/doc/translation.md @@ -5,12 +5,12 @@ your `WidgetsApp` for example `MaterialApp` which usually follows the system loc ## 🌐 Supported Locales -Currently, translations are available for these 48 locales: +Currently, translations are available for these 49 locales: * `ar`, `bg`, `bn`, `ca`, `cs`, `da`, `de` * `en`, `en_US`, `es`, `fa`, `fr`, `he` * `hi`, `id`, `it`, `ja`, `ko`, `km`, `ku` -* `ms`, `ne`, `nl`, `no`, `pl`, `pt` +* `mn`, `ms`, `ne`, `nl`, `no`, `pl`, `pt` * `pt_BR`, `ro`, `ro_RO`, `ru`, `sk`, `sr` * `sv`, `sw`, `th`, `tk`, `tr`, `uk`, `ur` * `vi`, `zh`, `zh_CN`, `zh_HK`, `hr` diff --git a/lib/src/l10n/generated/quill_localizations.dart b/lib/src/l10n/generated/quill_localizations.dart index 31b49075a..d3205e66c 100644 --- a/lib/src/l10n/generated/quill_localizations.dart +++ b/lib/src/l10n/generated/quill_localizations.dart @@ -32,6 +32,7 @@ import 'quill_localizations_km.dart'; import 'quill_localizations_ko.dart'; import 'quill_localizations_ku.dart'; import 'quill_localizations_mk.dart'; +import 'quill_localizations_mn.dart'; import 'quill_localizations_ms.dart'; import 'quill_localizations_ne.dart'; import 'quill_localizations_nl.dart'; @@ -168,6 +169,7 @@ abstract class FlutterQuillLocalizations { Locale('ku'), Locale('ku', 'CKB'), Locale('mk'), + Locale('mn'), Locale('ms'), Locale('ne'), Locale('nl'), @@ -870,6 +872,7 @@ class _FlutterQuillLocalizationsDelegate 'ko', 'ku', 'mk', + 'mn', 'ms', 'ne', 'nl', @@ -1000,6 +1003,8 @@ FlutterQuillLocalizations lookupFlutterQuillLocalizations(Locale locale) { return FlutterQuillLocalizationsKu(); case 'mk': return FlutterQuillLocalizationsMk(); + case 'mn': + return FlutterQuillLocalizationsMn(); case 'ms': return FlutterQuillLocalizationsMs(); case 'ne': diff --git a/lib/src/l10n/generated/quill_localizations_mn.dart b/lib/src/l10n/generated/quill_localizations_mn.dart new file mode 100644 index 000000000..2907b496a --- /dev/null +++ b/lib/src/l10n/generated/quill_localizations_mn.dart @@ -0,0 +1,336 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'quill_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for Mongolian (`mn`). +class FlutterQuillLocalizationsMn extends FlutterQuillLocalizations { + FlutterQuillLocalizationsMn([String locale = 'mn']) : super(locale); + + @override + String get pasteLink => 'Холбоос буулгах'; + + @override + String get ok => 'Ок'; + + @override + String get selectColor => 'Өнгө сонгох'; + + @override + String get gallery => 'Зургийн цомог'; + + @override + String get link => 'Холбоос'; + + @override + String get open => 'Нээх'; + + @override + String get copy => 'Хуулах'; + + @override + String get remove => 'Устгах'; + + @override + String get save => 'Хадгалах'; + + @override + String get zoom => 'Томруулах'; + + @override + String get saved => 'Хадгалагдсан'; + + @override + String get text => 'Бичвэр'; + + @override + String get resize => 'Хэмжээ өөрчлөх'; + + @override + String get width => 'Өргөн'; + + @override + String get height => 'Өндөр'; + + @override + String get size => 'Хэмжээ'; + + @override + String get small => 'Жижиг'; + + @override + String get large => 'Том'; + + @override + String get huge => 'Асар том'; + + @override + String get clear => 'Цэвэрлэх'; + + @override + String get font => 'Фонт'; + + @override + String get search => 'Хайх'; + + @override + String get camera => 'Камер'; + + @override + String get video => 'Видео'; + + @override + String get undo => 'Буцаах'; + + @override + String get redo => 'Дахин хийх'; + + @override + String get fontFamily => 'Тиг'; + + @override + String get fontSize => 'Бичгийн хэмжээ'; + + @override + String get bold => 'Бүдүүн'; + + @override + String get subscript => 'Доогуур бичих'; + + @override + String get superscript => 'Дээш бичих'; + + @override + String get italic => 'Налуу'; + + @override + String get underline => 'Доогуур зураас'; + + @override + String get strikeThrough => 'Дундуур зураас'; + + @override + String get inlineCode => 'Код'; + + @override + String get fontColor => 'Бичвэрийн өнгө'; + + @override + String get backgroundColor => 'Дэвсгэр өнгө'; + + @override + String get clearFormat => 'Хэв цэвэрлэх'; + + @override + String get alignLeft => 'Зүүн тийш шахах'; + + @override + String get alignCenter => 'Голлуулах'; + + @override + String get alignRight => 'Баруун тийш шахах'; + + @override + String get alignJustify => 'Тэгшитгэх'; + + @override + String get justifyWinWidth => 'Justify win width'; + + @override + String get textDirection => 'Бичвэрийн чиглэл'; + + @override + String get headerStyle => 'Толгойн хэв'; + + @override + String get normal => 'Хэвийн'; + + @override + String get heading1 => '1-р толгой'; + + @override + String get heading2 => '2-р толгой'; + + @override + String get heading3 => '3-р толгой'; + + @override + String get heading4 => '4-р толгой'; + + @override + String get heading5 => '5-р толгой'; + + @override + String get heading6 => '6-р толгой'; + + @override + String get numberedList => 'Тоот жагсаалт'; + + @override + String get bulletList => 'Цэгтэй жагсаалт'; + + @override + String get checkedList => 'Сонгодог жагсаалт'; + + @override + String get codeBlock => 'Код блок'; + + @override + String get quote => 'Ишлэл'; + + @override + String get increaseIndent => 'Догол нэмэх'; + + @override + String get decreaseIndent => 'Догол хасах'; + + @override + String get insertURL => 'URL оруулах'; + + @override + String get visitLink => 'Холбоос нээх'; + + @override + String get enterLink => 'Холбоос оруулах'; + + @override + String get enterMedia => 'Медиа оруулах'; + + @override + String get edit => 'Засварлах'; + + @override + String get apply => 'Apply'; + + @override + String get hex => 'Hex код'; + + @override + String get material => 'Материал'; + + @override + String get color => 'Өнгө'; + + @override + String get lineheight => 'Мөрийн өндөр'; + + @override + String get findText => 'Бичвэр олох'; + + @override + String get moveToPreviousOccurrence => 'Өмнөх илэрцрүү очих'; + + @override + String get moveToNextOccurrence => 'Дараагийн илэрцрүү очих'; + + @override + String get savedUsingTheNetwork => 'Сүлжээнд хадгаллаа'; + + @override + String get savedUsingLocalStorage => 'Төхөөрөмжийн санах ойд хадгаллаа'; + + @override + String theImageHasBeenSavedAt(String imagePath) { + return 'Зураг $imagePath-д хадгалагдлаа'; + } + + @override + String get errorWhileSavingImage => 'Зураг хадгалах үед алдаа гарлаа'; + + @override + String get pleaseEnterTextForYourLink => + 'Холбоосын бичвэрийг оруулна уу (жишээ нь: \'Дэлгэрэнгүй үзэх\')'; + + @override + String get pleaseEnterTheLinkURL => + 'Холбоосын URL-г оруулна уу (жишээ нь: \'https://example.com\')'; + + @override + String get pleaseEnterAValidImageURL => 'Зөв зургийн URL оруулна уу'; + + @override + String get pleaseEnterAValidVideoURL => 'Зөв бичлэгийн URL оруулна уу'; + + @override + String get photo => 'Зураг'; + + @override + String get image => 'Зураг'; + + @override + String get caseSensitivityAndWholeWordSearch => + 'Үсгийн том жижиг ялгах ба бүтэн үгээр хайх'; + + @override + String get caseSensitive => 'Үсгийн том жижиг ялгах'; + + @override + String get wholeWord => 'Бүтэн үгээр'; + + @override + String get insertImage => 'Зураг оруулах'; + + @override + String get pickAPhotoFromYourGallery => 'Зургийн цомгоос сонгох'; + + @override + String get takeAPhotoUsingYourCamera => 'Камераар зураг авч оруулах'; + + @override + String get pasteAPhotoUsingALink => 'Холбоосоор зураг буулгах'; + + @override + String get pickAVideoFromYourGallery => 'Зургийн цомгоос бичлэг сонгох'; + + @override + String get recordAVideoUsingYourCamera => 'Камераар бичлэг хийж оруулах'; + + @override + String get pasteAVideoUsingALink => 'Холбоосоор бичлэг буулгах'; + + @override + String get close => 'Хаах'; + + @override + String get searchSettings => 'Хайлтын тохиргоо'; + + @override + String get cut => 'Таслах'; + + @override + String get paste => 'Буулгах'; + + @override + String get insertTable => 'Хүснэгт оруулах'; + + @override + String get insertVideo => 'Бичлэг оруулах'; + + @override + String get errorUnexpectedSavingImage => + 'Зургийг хадгалах үед алдаа гарлаа. Дахин оролдоно уу.'; + + @override + String get successImageSavedGallery => + 'Зураг таны зургийн цомогт хадгалагдлаа.'; + + @override + String get successImageSaved => 'Зураг амжилттай хадгалагдлаа.'; + + @override + String get successImageDownloaded => 'Зураг амжилттай татагдлаа.'; + + @override + String get openGallery => 'Зургийн цомог нээх'; + + @override + String get openFileLocation => 'Файлын байршлыг нээх'; + + @override + String get openFile => 'Файл нээх'; + + @override + String get saveImagePermissionDenied => + 'Шаардлагатай зөвшөөрөл олгогдоогүй учир зургийг хадгалах боломжгүй байна.'; +} diff --git a/lib/src/l10n/quill_mn.arb b/lib/src/l10n/quill_mn.arb new file mode 100644 index 000000000..ffb8eed7e --- /dev/null +++ b/lib/src/l10n/quill_mn.arb @@ -0,0 +1,146 @@ +{ + "@@locale": "mn", + "pasteLink": "Холбоос буулгах", + "ok": "Ок", + "selectColor": "Өнгө сонгох", + "gallery": "Зургийн цомог", + "link": "Холбоос", + "open": "Нээх", + "copy": "Хуулах", + "remove": "Устгах", + "save": "Хадгалах", + "zoom": "Томруулах", + "saved": "Хадгалагдсан", + "text": "Бичвэр", + "resize": "Хэмжээ өөрчлөх", + "width": "Өргөн", + "height": "Өндөр", + "size": "Хэмжээ", + "small": "Жижиг", + "large": "Том", + "huge": "Асар том", + "clear": "Цэвэрлэх", + "font": "Фонт", + "search": "Хайх", + "camera": "Камер", + "video": "Видео", + "undo": "Буцаах", + "redo": "Дахин хийх", + "fontFamily": "Тиг", + "fontSize": "Бичгийн хэмжээ", + "bold": "Бүдүүн", + "subscript": "Доогуур бичих", + "superscript": "Дээш бичих", + "italic": "Налуу", + "underline": "Доогуур зураас", + "strikeThrough": "Дундуур зураас", + "inlineCode": "Код", + "fontColor": "Бичвэрийн өнгө", + "backgroundColor": "Дэвсгэр өнгө", + "clearFormat": "Хэв цэвэрлэх", + "alignLeft": "Зүүн тийш шахах", + "alignCenter": "Голлуулах", + "alignRight": "Баруун тийш шахах", + "alignJustify": "Тэгшитгэх", + "@alignJustify": { + "description": "Justify the text over the full window width" + }, + "justifyWinWidth": "Justify win width", + "textDirection": "Бичвэрийн чиглэл", + "headerStyle": "Толгойн хэв", + "normal": "Хэвийн", + "heading1": "1-р толгой", + "heading2": "2-р толгой", + "heading3": "3-р толгой", + "heading4": "4-р толгой", + "heading5": "5-р толгой", + "heading6": "6-р толгой", + "numberedList": "Тоот жагсаалт", + "bulletList": "Цэгтэй жагсаалт", + "checkedList": "Сонгодог жагсаалт", + "codeBlock": "Код блок", + "quote": "Ишлэл", + "increaseIndent": "Догол нэмэх", + "decreaseIndent": "Догол хасах", + "insertURL": "URL оруулах", + "visitLink": "Холбоос нээх", + "enterLink": "Холбоос оруулах", + "enterMedia": "Медиа оруулах", + "edit": "Засварлах", + "apply": "Apply", + "hex": "Hex код", + "material": "Материал", + "color": "Өнгө", + "lineheight": "Мөрийн өндөр", + "findText": "Бичвэр олох", + "moveToPreviousOccurrence": "Өмнөх илэрцрүү очих", + "moveToNextOccurrence": "Дараагийн илэрцрүү очих", + "savedUsingTheNetwork": "Сүлжээнд хадгаллаа", + "savedUsingLocalStorage": "Төхөөрөмжийн санах ойд хадгаллаа", + "theImageHasBeenSavedAt": "Зураг {imagePath}-д хадгалагдлаа", + "@theImageHasBeenSavedAt": { + "description": "A message with a single parameter", + "placeholders": { + "imagePath": { + "type": "String", + "example": "path/to/location" + } + } + }, + "errorWhileSavingImage": "Зураг хадгалах үед алдаа гарлаа", + "pleaseEnterTextForYourLink": "Холбоосын бичвэрийг оруулна уу (жишээ нь: 'Дэлгэрэнгүй үзэх')", + "pleaseEnterTheLinkURL": "Холбоосын URL-г оруулна уу (жишээ нь: 'https://example.com')", + "pleaseEnterAValidImageURL": "Зөв зургийн URL оруулна уу", + "pleaseEnterAValidVideoURL": "Зөв бичлэгийн URL оруулна уу", + "photo": "Зураг", + "image": "Зураг", + "caseSensitive": "Үсгийн том жижиг ялгах", + "caseSensitivityAndWholeWordSearch": "Үсгийн том жижиг ялгах ба бүтэн үгээр хайх", + "insertImage": "Зураг оруулах", + "wholeWord": "Бүтэн үгээр", + "insertImage": "Зураг оруулах", + "pickAPhotoFromYourGallery": "Зургийн цомгоос сонгох", + "takeAPhotoUsingYourCamera": "Камераар зураг авч оруулах", + "pasteAPhotoUsingALink": "Холбоосоор зураг буулгах", + "pickAVideoFromYourGallery": "Зургийн цомгоос бичлэг сонгох", + "recordAVideoUsingYourCamera": "Камераар бичлэг хийж оруулах", + "pasteAVideoUsingALink": "Холбоосоор бичлэг буулгах", + "close": "Хаах", + "searchSettings": "Хайлтын тохиргоо", + "cut": "Таслах", + "paste": "Буулгах", + "insertTable": "Хүснэгт оруулах", + "insertVideo": "Бичлэг оруулах", + "errorUnexpectedSavingImage": "Зургийг хадгалах үед алдаа гарлаа. Дахин оролдоно уу.", + "@errorUnexpectedSavingImage": { + "description": "A generic error message shown when an image cannot be saved due to an unknown issue" + }, + "successImageSavedGallery": "Зураг таны зургийн цомогт хадгалагдлаа.", + "@successImageSavedGallery": { + "description": "Message shown when an image is successfully saved to the system gallery" + }, + "successImageSaved": "Зураг амжилттай хадгалагдлаа.", + "@successImageSaved": { + "description": "Message shown on desktop when an image is successfully saved. The user is prompted to open the file location" + }, + "successImageDownloaded": "Зураг амжилттай татагдлаа.", + "@successImageDownloaded": { + "description": "Message shown on web when an image is successfully downloaded" + }, + "openGallery": "Зургийн цомог нээх", + "@openGallery": { + "description": "Label for the button that opens the system gallery" + }, + "openFileLocation": "Файлын байршлыг нээх", + "@openFileLocation": { + "description": "Label for the button that opens the file explorer to the file's location" + }, + "openFile": "Файл нээх", + "@openFile": { + "description": "Label for the button that opens the file" + }, + "saveImagePermissionDenied": "Шаардлагатай зөвшөөрөл олгогдоогүй учир зургийг хадгалах боломжгүй байна.", + "@saveImagePermissionDenied": { + "description": "Message shown when the app is unable to save an image because a required permission was denied or skipped" + } +} \ No newline at end of file From 5854fcd369e4b27187d7b9a4d24bb332f725277c Mon Sep 17 00:00:00 2001 From: Alspb <73047043+Alspb@users.noreply.github.com> Date: Thu, 7 May 2026 07:34:21 +0000 Subject: [PATCH 07/22] chore: fix pre-existing CI analyze failures (#2728) --- .github/workflows/pr-checks.yml | 1 + example/analysis_options.yaml | 4 ++++ flutter_quill_extensions/analysis_options.yaml | 5 +++++ .../editor/raw_editor/quill_single_child_scroll_view.dart | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 flutter_quill_extensions/analysis_options.yaml diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 601c3fbaa..41787d628 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -34,6 +34,7 @@ jobs: - if: ${{ !cancelled() }} name: Run Flutter Analyze Commenter + continue-on-error: true uses: yorifuji/flutter-analyze-commenter@v1 with: analyze-log: flutter_analyze.log diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml index f9b303465..b5f5c9f53 100644 --- a/example/analysis_options.yaml +++ b/example/analysis_options.yaml @@ -1 +1,5 @@ include: package:flutter_lints/flutter.yaml + +analyzer: + errors: + experimental_member_use: ignore diff --git a/flutter_quill_extensions/analysis_options.yaml b/flutter_quill_extensions/analysis_options.yaml new file mode 100644 index 000000000..b5f5c9f53 --- /dev/null +++ b/flutter_quill_extensions/analysis_options.yaml @@ -0,0 +1,5 @@ +include: package:flutter_lints/flutter.yaml + +analyzer: + errors: + experimental_member_use: ignore diff --git a/lib/src/editor/raw_editor/quill_single_child_scroll_view.dart b/lib/src/editor/raw_editor/quill_single_child_scroll_view.dart index 69877c392..c6cf35ae7 100644 --- a/lib/src/editor/raw_editor/quill_single_child_scroll_view.dart +++ b/lib/src/editor/raw_editor/quill_single_child_scroll_view.dart @@ -263,7 +263,7 @@ class _RenderSingleChildViewport extends RenderBox @override void applyPaintTransform(RenderBox child, Matrix4 transform) { final paintOffset = _paintOffset; - transform.translate(paintOffset.dx, paintOffset.dy); + transform.translateByDouble(paintOffset.dx, paintOffset.dy, 0, 1); } @override From 1643f56b51a8f2442c63863dde7584a61fe222a9 Mon Sep 17 00:00:00 2001 From: Jonathan Rezende Date: Tue, 19 May 2026 21:15:14 -0300 Subject: [PATCH 08/22] feat: add onFocusReceived implementation for Flutter 3.44 compatibility (#2726) Implements the new TextInputClient.onFocusReceived method required by Flutter SDK 3.44+. Returns false as the editor handles focus internally. Co-authored-by: Claude Opus 4.5 --- .../raw_editor/raw_editor_state_text_input_client_mixin.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart index bbd3837e0..ec672dfd8 100644 --- a/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart +++ b/lib/src/editor/raw_editor/raw_editor_state_text_input_client_mixin.dart @@ -382,6 +382,9 @@ mixin RawEditorStateTextInputClientMixin on EditorState _lastKnownRemoteTextEditingValue = null; } + @override + bool onFocusReceived() => false; + void _updateSizeAndTransform() { if (hasConnection) { // Asking for renderEditor.size here can cause errors if layout hasn't From ad6330e425d5443c7768a1845ea92b17489a8dc7 Mon Sep 17 00:00:00 2001 From: Ellet Date: Wed, 20 May 2026 03:22:24 +0300 Subject: [PATCH 09/22] chore(example): update deps, remove CocoaPods integration --- example/ios/Flutter/Debug.xcconfig | 1 - example/ios/Flutter/Release.xcconfig | 1 - example/ios/Podfile | 44 ----- example/ios/Runner.xcodeproj/project.pbxproj | 86 --------- example/macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../Flutter/GeneratedPluginRegistrant.swift | 2 +- example/macos/Podfile | 43 ----- example/macos/Podfile.lock | 16 -- .../macos/Runner.xcodeproj/project.pbxproj | 88 +-------- example/pubspec.lock | 168 +++++++++--------- l10n.yaml | 1 - 12 files changed, 83 insertions(+), 369 deletions(-) delete mode 100644 example/ios/Podfile delete mode 100644 example/macos/Podfile delete mode 100644 example/macos/Podfile.lock diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig index ec97fc6f3..592ceee85 100644 --- a/example/ios/Flutter/Debug.xcconfig +++ b/example/ios/Flutter/Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig index c4855bfe2..592ceee85 100644 --- a/example/ios/Flutter/Release.xcconfig +++ b/example/ios/Flutter/Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Podfile b/example/ios/Podfile deleted file mode 100644 index d97f17e22..000000000 --- a/example/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '12.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 703875deb..9e8120505 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -10,10 +10,8 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 6AB2329557D1981D6B17B057 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04DE71649CFF61B6EA443C6C /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; - 95A4F67B5B7C7331534DAE52 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC42284313298068A87F511 /* Pods_RunnerTests.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -43,19 +41,14 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 04DE71649CFF61B6EA443C6C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 1E6E80686AEE93DAC1D78B29 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 6F7E0A20E20DB7725721ACD2 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 71300142A7AF02C530456ED5 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7CC42284313298068A87F511 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,9 +56,6 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DD762FA5857F2B531FF16E5 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - CFC3FEF6AFF3650E4EE6A41D /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - DD86B4B806817CB345ACF05D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -73,7 +63,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 95A4F67B5B7C7331534DAE52 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,22 +71,12 @@ buildActionMask = 2147483647; files = ( 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, - 6AB2329557D1981D6B17B057 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 02F746990DACB0D119F72F34 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 04DE71649CFF61B6EA443C6C /* Pods_Runner.framework */, - 7CC42284313298068A87F511 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -106,20 +85,6 @@ path = RunnerTests; sourceTree = ""; }; - 6FE303D04C9AABB6B0EEFED3 /* Pods */ = { - isa = PBXGroup; - children = ( - 6F7E0A20E20DB7725721ACD2 /* Pods-Runner.debug.xcconfig */, - 71300142A7AF02C530456ED5 /* Pods-Runner.release.xcconfig */, - 1E6E80686AEE93DAC1D78B29 /* Pods-Runner.profile.xcconfig */, - CFC3FEF6AFF3650E4EE6A41D /* Pods-RunnerTests.debug.xcconfig */, - 9DD762FA5857F2B531FF16E5 /* Pods-RunnerTests.release.xcconfig */, - DD86B4B806817CB345ACF05D /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -138,8 +103,6 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 6FE303D04C9AABB6B0EEFED3 /* Pods */, - 02F746990DACB0D119F72F34 /* Frameworks */, ); sourceTree = ""; }; @@ -174,7 +137,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7E4B580A265C6F44F99FF718 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 940D3C4C6DD542413E14FFBD /* Frameworks */, @@ -193,7 +155,6 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - CF9215DAB0314651DACBA279 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -293,28 +254,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7E4B580A265C6F44F99FF718 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -330,28 +269,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - CF9215DAB0314651DACBA279 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -478,7 +395,6 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CFC3FEF6AFF3650E4EE6A41D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -496,7 +412,6 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DD762FA5857F2B531FF16E5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -512,7 +427,6 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DD86B4B806817CB345ACF05D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/example/macos/Flutter/Flutter-Debug.xcconfig b/example/macos/Flutter/Flutter-Debug.xcconfig index 4b81f9b2d..c2efd0b60 100644 --- a/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/example/macos/Flutter/Flutter-Release.xcconfig index 5caa9d157..c2efd0b60 100644 --- a/example/macos/Flutter/Flutter-Release.xcconfig +++ b/example/macos/Flutter/Flutter-Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index 3bcdb912f..9bf7023a7 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -14,5 +14,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) QuillNativeBridgePlugin.register(with: registry.registrar(forPlugin: "QuillNativeBridgePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) - FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) + VideoPlayerPlugin.register(with: registry.registrar(forPlugin: "VideoPlayerPlugin")) } diff --git a/example/macos/Podfile b/example/macos/Podfile deleted file mode 100644 index dbccf89c9..000000000 --- a/example/macos/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -platform :osx, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock deleted file mode 100644 index ce458c1e1..000000000 --- a/example/macos/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - FlutterMacOS (1.0.0) - -DEPENDENCIES: - - FlutterMacOS (from `Flutter/ephemeral`) - -EXTERNAL SOURCES: - FlutterMacOS: - :path: Flutter/ephemeral - -SPEC CHECKSUMS: - FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - -PODFILE CHECKSUM: c2e95c8c0fe03c5c57e438583cae4cc732296009 - -COCOAPODS: 1.16.2 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 4d1aed5d2..b8d2ef675 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -28,8 +28,6 @@ 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; - 8E3774B08A93A8D54E597870 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C6627E85DE71088607AABDE /* Pods_RunnerTests.framework */; }; - CBFCAD814543F1F46CF7EB02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B7FF1B5F74BB7EE9AEAADC6 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -63,7 +61,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2D37AD789A348E0ED9F8CF95 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -80,15 +77,9 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 4C6627E85DE71088607AABDE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7C0DBFDB60FEA7B74A31DCD6 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 8B7FF1B5F74BB7EE9AEAADC6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9DFF9F1E9DBEBF88D3130224 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - A469B99595D46C18EEEAB749 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - B94E8E7585B52349284FEC7C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - C0A4ACB16DD0C36754B830CC /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -96,7 +87,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8E3774B08A93A8D54E597870 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -105,7 +95,6 @@ buildActionMask = 2147483647; files = ( 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, - CBFCAD814543F1F46CF7EB02 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -138,8 +127,6 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - FA0924593192DA52F60E2347 /* Pods */, ); sourceTree = ""; }; @@ -166,6 +153,7 @@ 33CEB47122A05771004F2AC0 /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, @@ -187,29 +175,6 @@ path = Runner; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8B7FF1B5F74BB7EE9AEAADC6 /* Pods_Runner.framework */, - 4C6627E85DE71088607AABDE /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - FA0924593192DA52F60E2347 /* Pods */ = { - isa = PBXGroup; - children = ( - A469B99595D46C18EEEAB749 /* Pods-Runner.debug.xcconfig */, - B94E8E7585B52349284FEC7C /* Pods-Runner.release.xcconfig */, - 2D37AD789A348E0ED9F8CF95 /* Pods-Runner.profile.xcconfig */, - C0A4ACB16DD0C36754B830CC /* Pods-RunnerTests.debug.xcconfig */, - 9DFF9F1E9DBEBF88D3130224 /* Pods-RunnerTests.release.xcconfig */, - 7C0DBFDB60FEA7B74A31DCD6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -217,7 +182,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C27377F9664DD6D00B8324C5 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -236,7 +200,6 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - ADA7845785713A6AD96ACC83 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, @@ -368,50 +331,6 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - ADA7845785713A6AD96ACC83 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C27377F9664DD6D00B8324C5 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -463,7 +382,6 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C0A4ACB16DD0C36754B830CC /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -478,7 +396,6 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DFF9F1E9DBEBF88D3130224 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -493,7 +410,6 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C0DBFDB60FEA7B74A31DCD6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/example/pubspec.lock b/example/pubspec.lock index 46345c442..5b55bf168 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.13.1" boolean_selector: dependency: transitive description: @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" charcode: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5+2" csslib: dependency: transitive description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" file: dependency: transitive description: @@ -117,34 +117,34 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.4" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" + sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a" url: "https://pub.dev" source: hosted - version: "0.9.4+3" + version: "0.9.5" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" flutter: dependency: "direct main" description: flutter @@ -220,10 +220,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0" url: "https://pub.dev" source: hosted - version: "2.0.28" + version: "2.0.34" flutter_quill: dependency: "direct main" description: @@ -235,10 +235,10 @@ packages: dependency: transitive description: name: flutter_quill_delta_from_html - sha256: "4597bd0853a704696837aa6b05cffd851f587b176204c234edddfed1c1862a09" + sha256: "0eb801ea8dd498cadc057507af5da794d4c9599ce58b2569cb3d4bb53ba8bed2" url: "https://pub.dev" source: hosted - version: "1.5.2" + version: "1.5.3" flutter_quill_extensions: dependency: "direct main" description: @@ -280,10 +280,10 @@ packages: dependency: transitive description: name: http - sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.6.0" http_parser: dependency: transitive description: @@ -296,66 +296,66 @@ packages: dependency: transitive description: name: image_picker - sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + sha256: "91c025426c2881c551100bce834e201c835a170151545f58d17da5180ca7d9ac" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.2" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d" + sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f url: "https://pub.dev" source: hosted - version: "0.8.12+24" + version: "0.8.13+17" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" + sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" + sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588 url: "https://pub.dev" source: hosted - version: "0.8.12+2" + version: "0.8.13+6" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" + sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.2.2" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.11.1" image_picker_windows: dependency: transitive description: name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.2" integration_test: dependency: "direct dev" description: flutter @@ -405,34 +405,34 @@ packages: dependency: transitive description: name: markdown - sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" + sha256: ee85086ad7698b42522c6ad42fe195f1b9898e4d974a1af4576c1a3a176cada9 url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.1" matcher: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.18.0" mime: dependency: transitive description: @@ -477,18 +477,18 @@ packages: dependency: transitive description: name: process - sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 url: "https://pub.dev" source: hosted - version: "5.0.3" + version: "5.0.5" quill_native_bridge: dependency: transitive description: name: quill_native_bridge - sha256: "00752aca7d67cbd3254709a47558be78427750cb81aa42cfbed354d4a079bcfa" + sha256: "76a16512e398e84216f3f659f7cb18a89ec1e141ea908e954652b4ce6cf15b18" url: "https://pub.dev" source: hosted - version: "11.0.1" + version: "11.1.0" quill_native_bridge_android: dependency: transitive description: @@ -505,14 +505,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.1" - quill_native_bridge_linux: - dependency: transitive - description: - name: quill_native_bridge_linux - sha256: "388aaa62017dbd746742ce0bfae99f4ffe1dda2462e8a866df630c67b63c54fe" - url: "https://pub.dev" - source: hosted - version: "0.0.2" quill_native_bridge_macos: dependency: transitive description: @@ -562,10 +554,10 @@ packages: dependency: transitive description: name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" url: "https://pub.dev" source: hosted - version: "1.10.1" + version: "1.10.2" stack_trace: dependency: transitive description: @@ -610,10 +602,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.11" typed_data: dependency: transitive description: @@ -634,34 +626,34 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572" url: "https://pub.dev" source: hosted - version: "6.3.16" + version: "6.3.29" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0" url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.4.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.5" url_launcher_platform_interface: dependency: transitive description: @@ -674,18 +666,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" vector_math: dependency: transitive description: @@ -698,34 +690,34 @@ packages: dependency: transitive description: name: video_player - sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" + sha256: "48a7bdaa38a3d50ec10c78627abdbfad863fdf6f0d6e08c7c3c040cfd80ae36f" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.1" video_player_android: dependency: transitive description: name: video_player_android - sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73" + sha256: "877a6c7ba772456077d7bfd71314629b3fe2b73733ce503fc77c3314d43a0ca0" url: "https://pub.dev" source: hosted - version: "2.8.7" + version: "2.9.5" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953" + sha256: "9338f3ec22774f88146b22f13273a446719b1da010fd200c4d1d97802156ac58" url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.9.7" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a + sha256: "16eaed5268c571c31840dc58ef8da5f0cd4db2a98490c3b8f1cf70122546c6e0" url: "https://pub.dev" source: hosted - version: "6.4.0" + version: "6.7.0" video_player_web: dependency: transitive description: @@ -738,10 +730,10 @@ packages: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.2.0" web: dependency: transitive description: @@ -762,10 +754,10 @@ packages: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" sdks: - dart: ">=3.8.0 <4.0.0" - flutter: ">=3.29.0" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.38.0" diff --git a/l10n.yaml b/l10n.yaml index 19167d040..1c6cac339 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -3,7 +3,6 @@ template-arb-file: quill_en.arb output-localization-file: quill_localizations.dart output-class: FlutterQuillLocalizations output-dir: lib/src/l10n/generated -synthetic-package: false format: true untranslated-messages-file: lib/src/l10n/untranslated.json nullable-getter: true From db0da108ec9907a722644ae79513bb5e04836814 Mon Sep 17 00:00:00 2001 From: Ellet Date: Wed, 20 May 2026 03:28:08 +0300 Subject: [PATCH 10/22] chore(release): prepare to publish 11.5.1 --- CHANGELOG.md | 5 +++++ example/pubspec.lock | 2 +- pubspec.yaml | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e312efc51..dfb8f1d2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added localization support for `mn` (Mongolian, Mongolia) +### Changed + +- Updated minimum supported SDK version to Flutter 3.44/Dart 3.12. +- Implemented the new [TextInputClient.onFocusReceived](https://github.com/flutter/flutter/blob/stable/packages/flutter/lib/src/services/text_input.dart#L1395-L1401) method required by Flutter SDK 3.44+ (`returns false`). + ## [11.5.0] - 2025-10-18 ### Fixed diff --git a/example/pubspec.lock b/example/pubspec.lock index 5b55bf168..2788c6e15 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -230,7 +230,7 @@ packages: path: ".." relative: true source: path - version: "11.5.0" + version: "11.5.1" flutter_quill_delta_from_html: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index ea686e142..64bf5dc50 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_quill description: "A rich text editor built for Android, iOS, Web, and desktop platforms. It's the WYSIWYG editor and a Quill component for Flutter." -version: 11.5.0 +version: 11.5.1 homepage: https://github.com/singerdmx/flutter-quill/ repository: https://github.com/singerdmx/flutter-quill/ issue_tracker: https://github.com/singerdmx/flutter-quill/issues/ @@ -18,8 +18,8 @@ screenshots: path: example/assets/images/screenshot_4.png environment: - sdk: '>=3.0.0 <4.0.0' - flutter: ">=3.0.0" + sdk: ^3.12.0 + flutter: ">=3.44.0" # The versions listed here indicate the minimum required for dependencies # and do not affect those used in the client's application. From d07b8fb534219bc45a03f1a1b522ff6694a13d17 Mon Sep 17 00:00:00 2001 From: Ellet Date: Wed, 20 May 2026 03:29:23 +0300 Subject: [PATCH 11/22] chore(release): prepare to publish 11.5.1 --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfb8f1d2a..5eb5980ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [11.5.1] - 2026-05-20 + ### Added - Added localization support for `mn` (Mongolian, Mongolia) @@ -192,7 +194,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Apple-specific font dependency for subscript and superscript functionality from the example. - **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()`. -[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.5.0...HEAD +[unreleased]: https://github.com/singerdmx/flutter-quill/compare/v11.5.1...HEAD +[11.5.1]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.5.1 [11.5.0]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.5.0 [11.4.2]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.2 [11.4.1]: https://github.com/singerdmx/flutter-quill/compare/v10.0.0...v11.4.1 From 5c96e65d8917657bb684db80f57abd5cc53e578b Mon Sep 17 00:00:00 2001 From: Alspb <73047043+Alspb@users.noreply.github.com> Date: Tue, 9 Jun 2026 08:11:50 +0000 Subject: [PATCH 12/22] Complete the Flutter 3.44 / Dart 3.12 migration (#2740) * fix(example): repair Android build on Flutter 3.44 and finish the SDK bump * chore(scripts): format only uncommitted Dart files in before_push * fix: resolve Dart 3.12 analyzer warnings and lints --- CHANGELOG.md | 4 + .../app/{build.gradle => build.gradle.kts} | 22 +- example/android/build.gradle | 18 - example/android/build.gradle.kts | 24 ++ example/android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/settings.gradle | 25 -- example/android/settings.gradle.kts | 26 ++ example/linux/CMakeLists.txt | 2 +- example/pubspec.lock | 4 +- example/pubspec.yaml | 4 +- flutter_quill_extensions/CHANGELOG.md | 4 + .../src/editor/image/config/image_config.dart | 4 +- flutter_quill_extensions/pubspec.yaml | 4 +- flutter_quill_test/CHANGELOG.md | 4 + flutter_quill_test/pubspec.yaml | 4 +- lib/flutter_quill.dart | 2 +- lib/src/controller/quill_controller.dart | 164 ++++--- lib/src/editor/editor.dart | 408 +++++++++++------- .../quill_single_child_scroll_view.dart | 34 +- lib/src/editor/widgets/text/text_block.dart | 256 +++++------ .../buttons/link_style/link_dialog.dart | 33 +- .../toolbar/config/simple_toolbar_config.dart | 5 +- scripts/before_push.dart | 66 ++- 24 files changed, 639 insertions(+), 484 deletions(-) rename example/android/app/{build.gradle => build.gradle.kts} (59%) delete mode 100644 example/android/build.gradle create mode 100644 example/android/build.gradle.kts delete mode 100644 example/android/settings.gradle create mode 100644 example/android/settings.gradle.kts diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eb5980ef..7bd0ea4c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Removed + +- Removed the already-`@Deprecated` and `@internal` `linkPrefixes` constant from the public API surface (it is hidden from the `flutter_quill.dart` export). Use `LinkValidator.linkPrefixes` instead. + ## [11.5.1] - 2026-05-20 ### Added diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle.kts similarity index 59% rename from example/android/app/build.gradle rename to example/android/app/build.gradle.kts index 9caa6dd24..760f25fc8 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle.kts @@ -1,8 +1,7 @@ plugins { - id "com.android.application" - id "kotlin-android" + id("com.android.application") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. - id "dev.flutter.flutter-gradle-plugin" + id("dev.flutter.flutter-gradle-plugin") } android { @@ -11,12 +10,8 @@ android { ndkVersion = flutter.ndkVersion compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - - kotlinOptions { - jvmTarget = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { @@ -29,11 +24,18 @@ android { buildTypes { release { - signingConfig = signingConfigs.debug + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") } } } +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + flutter { source = "../.." } diff --git a/example/android/build.gradle b/example/android/build.gradle deleted file mode 100644 index d2ffbffa4..000000000 --- a/example/android/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = "../build" -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(":app") -} - -tasks.register("clean", Delete) { - delete rootProject.buildDir -} diff --git a/example/android/build.gradle.kts b/example/android/build.gradle.kts new file mode 100644 index 000000000..dbee657bb --- /dev/null +++ b/example/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 259717082..4147ba381 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,7 @@ org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true +# This builtInKotlin flag was added automatically by Flutter migrator +android.builtInKotlin=false +# This newDsl flag was added automatically by Flutter migrator +android.newDsl=false diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index b82aa23a4..a35649f5f 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/example/android/settings.gradle b/example/android/settings.gradle deleted file mode 100644 index a00f9ea70..000000000 --- a/example/android/settings.gradle +++ /dev/null @@ -1,25 +0,0 @@ -pluginManagement { - def flutterSdkPath = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def flutterSdkPath = properties.getProperty("flutter.sdk") - assert flutterSdkPath != null, "flutter.sdk not set in local.properties" - return flutterSdkPath - }() - - includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -plugins { - id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.3.1" apply false - id "org.jetbrains.kotlin.android" version "1.8.22" apply false -} - -include ":app" diff --git a/example/android/settings.gradle.kts b/example/android/settings.gradle.kts new file mode 100644 index 000000000..c21f0c5b4 --- /dev/null +++ b/example/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "9.0.1" apply false + id("org.jetbrains.kotlin.android") version "2.3.20" apply false +} + +include(":app") diff --git a/example/linux/CMakeLists.txt b/example/linux/CMakeLists.txt index 280c69355..d7ee3300d 100644 --- a/example/linux/CMakeLists.txt +++ b/example/linux/CMakeLists.txt @@ -1,5 +1,5 @@ # Project-level configuration. -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.13) project(runner LANGUAGES CXX) # The name of the executable created for the application. Change this to change diff --git a/example/pubspec.lock b/example/pubspec.lock index 2788c6e15..de98b8003 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -759,5 +759,5 @@ packages: source: hosted version: "5.15.0" sdks: - dart: ">=3.10.0 <4.0.0" - flutter: ">=3.38.0" + dart: ">=3.12.0 <4.0.0" + flutter: ">=3.44.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index ac5083005..3a6552e3d 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,8 +4,8 @@ publish_to: 'none' version: 0.1.0+1 environment: - sdk: ^3.5.0 - flutter: ">=3.24.0" + sdk: ^3.12.0 + flutter: ">=3.44.0" dependencies: flutter: diff --git a/flutter_quill_extensions/CHANGELOG.md b/flutter_quill_extensions/CHANGELOG.md index d68bfd322..3297e7aa2 100644 --- a/flutter_quill_extensions/CHANGELOG.md +++ b/flutter_quill_extensions/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Updated minimum supported SDK version to Flutter 3.44/Dart 3.12 to align with `flutter_quill`. + ## [11.0.0] - 2025-02-16 > [!IMPORTANT] diff --git a/flutter_quill_extensions/lib/src/editor/image/config/image_config.dart b/flutter_quill_extensions/lib/src/editor/image/config/image_config.dart index 3b8f1c114..35d6be9f9 100644 --- a/flutter_quill_extensions/lib/src/editor/image/config/image_config.dart +++ b/flutter_quill_extensions/lib/src/editor/image/config/image_config.dart @@ -12,12 +12,12 @@ import '../image_embed_types.dart'; @immutable class QuillEditorImageEmbedConfig { const QuillEditorImageEmbedConfig({ - ImageEmbedBuilderOnRemovedCallback? onImageRemovedCallback, + this._onImageRemovedCallback, this.shouldRemoveImageCallback, this.imageProviderBuilder, this.imageErrorWidgetBuilder, this.onImageClicked, - }) : _onImageRemovedCallback = onImageRemovedCallback; + }); /// [onImageRemovedCallback] is called when an image is /// removed from the editor. diff --git a/flutter_quill_extensions/pubspec.yaml b/flutter_quill_extensions/pubspec.yaml index 6f5cae329..b7c3e806d 100644 --- a/flutter_quill_extensions/pubspec.yaml +++ b/flutter_quill_extensions/pubspec.yaml @@ -16,8 +16,8 @@ platforms: windows: environment: - sdk: '>=3.0.0 <4.0.0' - flutter: ">=3.0.0" + sdk: ^3.12.0 + flutter: ">=3.44.0" # The versions listed here indicate the minimum required for dependencies # and do not affect those used in the client's application. diff --git a/flutter_quill_test/CHANGELOG.md b/flutter_quill_test/CHANGELOG.md index 2e1107f30..7775b39db 100644 --- a/flutter_quill_test/CHANGELOG.md +++ b/flutter_quill_test/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Updated minimum supported SDK version to Flutter 3.44/Dart 3.12 to align with `flutter_quill`. + ## [11.1.0] - 2025-03-19 ### Added diff --git a/flutter_quill_test/pubspec.yaml b/flutter_quill_test/pubspec.yaml index 4ab936042..b814008b1 100644 --- a/flutter_quill_test/pubspec.yaml +++ b/flutter_quill_test/pubspec.yaml @@ -8,8 +8,8 @@ documentation: https://github.com/singerdmx/flutter-quill/tree/master/flutter_qu topics: [testing, text, rich-text-editor, flutter-quill] environment: - sdk: '>=3.0.0 <4.0.0' - flutter: ">=1.17.0" + sdk: ^3.12.0 + flutter: ">=3.44.0" dependencies: flutter: diff --git a/lib/flutter_quill.dart b/lib/flutter_quill.dart index 81e19fa9a..d35cd10bb 100644 --- a/lib/flutter_quill.dart +++ b/lib/flutter_quill.dart @@ -26,7 +26,7 @@ export 'src/editor/raw_editor/raw_editor_state.dart'; export 'src/editor/style_widgets/style_widgets.dart'; export 'src/editor/widgets/cursor.dart'; export 'src/editor/widgets/default_styles.dart'; -export 'src/editor/widgets/link.dart'; +export 'src/editor/widgets/link.dart' hide linkPrefixes; export 'src/editor/widgets/text/magnifier.dart'; export 'src/editor/widgets/text/utils/text_block_utils.dart'; export 'src/editor_toolbar_controller_shared/copy_cut_service/copy_cut_service.dart'; diff --git a/lib/src/controller/quill_controller.dart b/lib/src/controller/quill_controller.dart index 0d2d291a4..e11525077 100644 --- a/lib/src/controller/quill_controller.dart +++ b/lib/src/controller/quill_controller.dart @@ -27,8 +27,8 @@ typedef DeleteCallback = void Function(int cursorPosition, bool forward); class QuillController extends ChangeNotifier { QuillController({ - required Document document, - required TextSelection selection, + required this._document, + required this._selection, this.config = const QuillControllerConfig(), this.keepStyleOnNewLine = true, this.onReplaceText, @@ -36,17 +36,15 @@ class QuillController extends ChangeNotifier { this.onSelectionCompleted, this.onSelectionChanged, this.readOnly = false, - }) : _document = document, - _selection = selection; + }); factory QuillController.basic({ QuillControllerConfig config = const QuillControllerConfig(), - }) => - QuillController( - config: config, - document: Document(), - selection: const TextSelection.collapsed(offset: 0), - ); + }) => QuillController( + config: config, + document: Document(), + selection: const TextSelection.collapsed(offset: 0), + ); final QuillControllerConfig config; @@ -132,10 +130,8 @@ class QuillController extends ChangeNotifier { Stream get changes => document.changes; - TextEditingValue get plainTextEditingValue => TextEditingValue( - text: document.toPlainText(), - selection: selection, - ); + TextEditingValue get plainTextEditingValue => + TextEditingValue(text: document.toPlainText(), selection: selection); /// Only attributes applied to all characters within this range are /// included in the result. @@ -183,10 +179,8 @@ class QuillController extends ChangeNotifier { for (final style in styles) { final indent = style.value.attributes[Attribute.indent.key]; final formatIndex = math.max(style.offset, selection.start); - final formatLength = math.min( - style.offset + (style.length ?? 0), - selection.end, - ) - + final formatLength = + math.min(style.offset + (style.length ?? 0), selection.end) - style.offset; Attribute? formatAttribute; if (indent == null) { @@ -212,22 +206,27 @@ class QuillController extends ChangeNotifier { /// Returns all styles and Embed for each node within selection List getAllIndividualSelectionStylesAndEmbed() { final stylesAndEmbed = document.collectAllIndividualStyleAndEmbed( - selection.start, selection.end - selection.start); + selection.start, + selection.end - selection.start, + ); return stylesAndEmbed; } /// Returns plain text for each node within selection String getPlainText() { - final text = - document.getPlainText(selection.start, selection.end - selection.start); + final text = document.getPlainText( + selection.start, + selection.end - selection.start, + ); return text; } /// Returns all styles for any character within the specified text range. List