From e231e3f0b0a56b8c04677418011a48397728c337 Mon Sep 17 00:00:00 2001 From: Mohamed Abdelbasit Date: Thu, 7 Aug 2025 14:28:56 +0300 Subject: [PATCH 1/4] chore: update Xcode project settings and improve localization code formatting --- example/ios/Runner.xcodeproj/project.pbxproj | 18 +++ .../xcshareddata/xcschemes/Runner.xcscheme | 2 + .../l10n/generated/quill_localizations.dart | 124 +++++++++--------- 3 files changed, 84 insertions(+), 60 deletions(-) diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 703875deb..bed4809f9 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -200,6 +200,7 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + CDB8EBF0D983E24084335D4E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,6 +331,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + CDB8EBF0D983E24084335D4E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; CF9215DAB0314651DACBA279 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index d795332e1..c3fedb29c 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -44,6 +44,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> ( - context, FlutterQuillLocalizations); + context, + FlutterQuillLocalizations, + ); } static const LocalizationsDelegate delegate = @@ -131,11 +133,11 @@ abstract class FlutterQuillLocalizations { /// of delegates is preferred or required. static const List> localizationsDelegates = >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ @@ -191,7 +193,7 @@ abstract class FlutterQuillLocalizations { Locale('zh'), Locale('zh', 'CN'), Locale('zh', 'HK'), - Locale('zh', 'TW') + Locale('zh', 'TW'), ]; /// No description provided for @pasteLink. @@ -838,58 +840,59 @@ class _FlutterQuillLocalizationsDelegate @override Future load(Locale locale) { return SynchronousFuture( - lookupFlutterQuillLocalizations(locale)); + lookupFlutterQuillLocalizations(locale), + ); } @override bool isSupported(Locale locale) => [ - 'am', - 'ar', - 'bg', - 'bn', - 'bs', - 'ca', - 'cs', - 'da', - 'de', - 'el', - 'en', - 'es', - 'fa', - 'fi', - 'fr', - 'gu', - 'he', - 'hi', - 'hr', - 'hu', - 'id', - 'it', - 'ja', - 'km', - 'ko', - 'ku', - 'mk', - 'ms', - 'ne', - 'nl', - 'no', - 'pl', - 'pt', - 'ro', - 'ru', - 'sk', - 'sr', - 'sv', - 'sw', - 'th', - 'tk', - 'tr', - 'uk', - 'ur', - 'vi', - 'zh' - ].contains(locale.languageCode); + 'am', + 'ar', + 'bg', + 'bn', + 'bs', + 'ca', + 'cs', + 'da', + 'de', + 'el', + 'en', + 'es', + 'fa', + 'fi', + 'fr', + 'gu', + 'he', + 'hi', + 'hr', + 'hu', + 'id', + 'it', + 'ja', + 'km', + 'ko', + 'ku', + 'mk', + 'ms', + 'ne', + 'nl', + 'no', + 'pl', + 'pt', + 'ro', + 'ru', + 'sk', + 'sr', + 'sv', + 'sw', + 'th', + 'tk', + 'tr', + 'uk', + 'ur', + 'vi', + 'zh', + ].contains(locale.languageCode); @override bool shouldReload(_FlutterQuillLocalizationsDelegate old) => false; @@ -1041,8 +1044,9 @@ FlutterQuillLocalizations lookupFlutterQuillLocalizations(Locale locale) { } throw FlutterError( - 'FlutterQuillLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); + 'FlutterQuillLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.', + ); } From 27081d3398c2dade86f07fe0b7ef09d9de597afb Mon Sep 17 00:00:00 2001 From: Mohamed Abdelbasit Date: Thu, 7 Aug 2025 14:40:40 +0300 Subject: [PATCH 2/4] fix: adjust hit test offset calculation for RTL support in RenderEditableTextLine --- lib/src/editor/widgets/text/text_line.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/src/editor/widgets/text/text_line.dart b/lib/src/editor/widgets/text/text_line.dart index ee09dcc49..3464158ae 100644 --- a/lib/src/editor/widgets/text/text_line.dart +++ b/lib/src/editor/widgets/text/text_line.dart @@ -1481,11 +1481,18 @@ class RenderEditableTextLine extends RenderEditableBox { bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { if (_leading != null) { final childParentData = _leading!.parentData as BoxParentData; + // Use the same offset calculation as in paint() method for RTL support + final leadingOffset = textDirection == TextDirection.ltr + ? childParentData.offset + : Offset( + size.width - _leading!.size.width, + childParentData.offset.dy, + ); final isHit = result.addWithPaintOffset( - offset: childParentData.offset, + offset: leadingOffset, position: position, hitTest: (result, transformed) { - assert(transformed == position - childParentData.offset); + assert(transformed == position - leadingOffset); return _leading!.hitTest(result, position: transformed); }, ); From 64d1e35ea2d8d1e48ec628159c1d55f058a1ba14 Mon Sep 17 00:00:00 2001 From: Mohamed Abdelbasit Date: Thu, 7 Aug 2025 14:43:13 +0300 Subject: [PATCH 3/4] chore: update changelog to include fix for RTL checkbox click area issue --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9ff048a3..ed8b1b53b 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 + +- **RTL checkbox click area issue** fixed where checkboxes in RTL text direction were visually positioned correctly but remained clickable only in their LTR position. + ## [11.4.2] - 2025-07-22 ### Fixed From b165328c9b37bf5fc114ecfa23daa506f9b5e6e0 Mon Sep 17 00:00:00 2001 From: Mohamed Abdelbasit Date: Thu, 21 Aug 2025 14:09:13 +0300 Subject: [PATCH 4/4] chore: update dependencies and remove unused imports in localization and editor files --- example/pubspec.lock | 96 +++++++------- .../src/editor/image/image_save_utils.dart | 1 - ..._editor_state_text_input_client_mixin.dart | 1 - lib/src/editor/widgets/link.dart | 1 - .../l10n/generated/quill_localizations.dart | 124 +++++++++--------- 5 files changed, 108 insertions(+), 115 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index 1302b05b4..29bbfbd07 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: file_selector_macos - sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" + sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" url: "https://pub.dev" source: hosted - version: "0.9.4+3" + version: "0.9.4+4" file_selector_platform_interface: dependency: transitive description: @@ -220,10 +220,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + sha256: "6382ce712ff69b0f719640ce957559dde459e55ecd433c767e06d139ddf16cab" url: "https://pub.dev" source: hosted - version: "2.0.28" + version: "2.0.29" 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: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" http_parser: dependency: transitive description: @@ -296,66 +296,66 @@ packages: dependency: transitive description: name: image_picker - sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d" + sha256: e83b2b05141469c5e19d77e1dfa11096b6b1567d09065b2265d7c6904560050c url: "https://pub.dev" source: hosted - version: "0.8.12+24" + version: "0.8.13" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" + sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.0" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" + sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e url: "https://pub.dev" source: hosted - version: "0.8.12+2" + version: "0.8.13" 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: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.2.2" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" + sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.11.0" 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 @@ -373,26 +373,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.1" 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: @@ -477,10 +477,10 @@ 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: @@ -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: @@ -634,18 +634,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + sha256: "0aedad096a85b49df2e4725fa32118f9fa580f3b14af7a2d2221896a02cd5656" url: "https://pub.dev" source: hosted - version: "6.3.16" + version: "6.3.17" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.3.4" url_launcher_linux: dependency: transitive description: @@ -658,10 +658,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.3" url_launcher_platform_interface: 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: @@ -706,18 +706,18 @@ packages: dependency: transitive description: name: video_player_android - sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73" + sha256: "53f3b57c7ac88c18e6074d0f94c7146e128c515f0a4503c3061b8e71dea3a0f2" url: "https://pub.dev" source: hosted - version: "2.8.7" + version: "2.8.12" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953" + sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.8.4" video_player_platform_interface: dependency: transitive description: @@ -738,10 +738,10 @@ packages: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.0.2" web: dependency: transitive description: 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 5857bcf00..a9564c762 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 '../../delta/delta_diff.dart'; import '../../document/document.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'; diff --git a/lib/src/l10n/generated/quill_localizations.dart b/lib/src/l10n/generated/quill_localizations.dart index 36f477a1a..31b49075a 100644 --- a/lib/src/l10n/generated/quill_localizations.dart +++ b/lib/src/l10n/generated/quill_localizations.dart @@ -107,15 +107,13 @@ import 'quill_localizations_zh.dart'; /// property. abstract class FlutterQuillLocalizations { FlutterQuillLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; static FlutterQuillLocalizations? of(BuildContext context) { return Localizations.of( - context, - FlutterQuillLocalizations, - ); + context, FlutterQuillLocalizations); } static const LocalizationsDelegate delegate = @@ -133,11 +131,11 @@ abstract class FlutterQuillLocalizations { /// of delegates is preferred or required. static const List> localizationsDelegates = >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ @@ -193,7 +191,7 @@ abstract class FlutterQuillLocalizations { Locale('zh'), Locale('zh', 'CN'), Locale('zh', 'HK'), - Locale('zh', 'TW'), + Locale('zh', 'TW') ]; /// No description provided for @pasteLink. @@ -840,59 +838,58 @@ class _FlutterQuillLocalizationsDelegate @override Future load(Locale locale) { return SynchronousFuture( - lookupFlutterQuillLocalizations(locale), - ); + lookupFlutterQuillLocalizations(locale)); } @override bool isSupported(Locale locale) => [ - 'am', - 'ar', - 'bg', - 'bn', - 'bs', - 'ca', - 'cs', - 'da', - 'de', - 'el', - 'en', - 'es', - 'fa', - 'fi', - 'fr', - 'gu', - 'he', - 'hi', - 'hr', - 'hu', - 'id', - 'it', - 'ja', - 'km', - 'ko', - 'ku', - 'mk', - 'ms', - 'ne', - 'nl', - 'no', - 'pl', - 'pt', - 'ro', - 'ru', - 'sk', - 'sr', - 'sv', - 'sw', - 'th', - 'tk', - 'tr', - 'uk', - 'ur', - 'vi', - 'zh', - ].contains(locale.languageCode); + 'am', + 'ar', + 'bg', + 'bn', + 'bs', + 'ca', + 'cs', + 'da', + 'de', + 'el', + 'en', + 'es', + 'fa', + 'fi', + 'fr', + 'gu', + 'he', + 'hi', + 'hr', + 'hu', + 'id', + 'it', + 'ja', + 'km', + 'ko', + 'ku', + 'mk', + 'ms', + 'ne', + 'nl', + 'no', + 'pl', + 'pt', + 'ro', + 'ru', + 'sk', + 'sr', + 'sv', + 'sw', + 'th', + 'tk', + 'tr', + 'uk', + 'ur', + 'vi', + 'zh' + ].contains(locale.languageCode); @override bool shouldReload(_FlutterQuillLocalizationsDelegate old) => false; @@ -1044,9 +1041,8 @@ FlutterQuillLocalizations lookupFlutterQuillLocalizations(Locale locale) { } throw FlutterError( - 'FlutterQuillLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.', - ); + 'FlutterQuillLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); }