From 777f3dab2a9fe509bc443173a9bb4ede66a6d67d Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Fri, 15 Aug 2025 23:12:50 +0300 Subject: [PATCH 01/10] feat: allow overriding languageCheckService style: no leading underscores for local identifiers --- .../controllers/language_tool_controller.dart | 67 ++++++++++++------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/lib/src/core/controllers/language_tool_controller.dart b/lib/src/core/controllers/language_tool_controller.dart index 5f94bae..34f2a62 100644 --- a/lib/src/core/controllers/language_tool_controller.dart +++ b/lib/src/core/controllers/language_tool_controller.dart @@ -22,20 +22,6 @@ class LanguageToolController extends TextEditingController { /// Color scheme to highlight mistakes final HighlightStyle highlightStyle; - /// Represents the type of delay for language checking. - /// - /// [DelayType.debouncing] - Calls a function when a user hasn't carried out - /// the event in a specific amount of time. - /// - /// [DelayType.throttling] - Calls a function at intervals of a specified - /// amount of time while the user is carrying out the event. - final DelayType delayType; - - /// Represents the duration of the delay for language checking. - /// - /// If the delay is [Duration.zero], no delaying is applied. - final Duration delay; - /// Create an instance of [LanguageToolClient] instance final _languageToolClient = LanguageToolClient(); @@ -83,16 +69,51 @@ class LanguageToolController extends TextEditingController { } /// Controller constructor + /// + /// [highlightStyle] - Color scheme to highlight mistakes + /// [delayType] - Represents the type of delay for language checking. + /// + /// [DelayType.debouncing] - Calls a function when a user hasn't carried out + /// the event in a specific amount of time. + /// + /// [DelayType.throttling] - Calls a function at intervals of a specified + /// amount of time while the user is carrying out the event. + /// [delay] - Represents the duration of the delay for language checking. + /// + /// If the delay is [Duration.zero], no delaying is applied. LanguageToolController({ this.highlightStyle = const HighlightStyle(), - this.delay = Duration.zero, - this.delayType = DelayType.debouncing, + DelayType delayType = DelayType.debouncing, + Duration delay = Duration.zero, }) { - _languageCheckService = _getLanguageCheckService(); + _languageCheckService = _getLanguageCheckService( + delayType: delayType, + delay: delay, + languageToolClient: _languageToolClient, + ); } - LanguageCheckService _getLanguageCheckService() { - final languageToolService = LangToolService(_languageToolClient); + /// Creates a [LanguageToolController] with a custom [LanguageCheckService]. + /// + /// This constructor allows you to provide your own implementation of the + /// language checking service, giving you full control over how text is + /// analyzed and processed. + /// + /// Parameters: + /// * [languageCheckService] - The service responsible for performing language + /// checks and grammar validation. This parameter is required. + /// * [highlightStyle] - Color scheme to highlight mistakes + LanguageToolController.withService({ + required LanguageCheckService languageCheckService, + this.highlightStyle = const HighlightStyle(), + }) : _languageCheckService = languageCheckService; + + static LanguageCheckService _getLanguageCheckService({ + required DelayType delayType, + required Duration delay, + required LanguageToolClient languageToolClient, + }) { + final languageToolService = LangToolService(languageToolClient); if (delay == Duration.zero) return languageToolService; @@ -111,8 +132,8 @@ class LanguageToolController extends TextEditingController { @override TextSpan buildTextSpan({ required BuildContext context, - TextStyle? style, required bool withComposing, + TextStyle? style, }) { final formattedTextSpans = _generateSpans( context, @@ -200,7 +221,7 @@ class LanguageToolController extends TextEditingController { final Color mistakeColor = _getMistakeColor(mistake.type); /// Create a gesture recognizer for mistake - final _onTap = TapGestureRecognizer() + final onTap = TapGestureRecognizer() ..onTapDown = (details) { popupWidget?.show( context, @@ -223,7 +244,7 @@ class LanguageToolController extends TextEditingController { }; /// Adding recognizer to the list for future disposing - _recognizers.add(_onTap); + _recognizers.add(onTap); /// Mistake highlighted TextSpan yield TextSpan( @@ -242,7 +263,7 @@ class LanguageToolController extends TextEditingController { decorationColor: mistakeColor, decorationThickness: highlightStyle.mistakeLineThickness, ), - recognizer: _onTap, + recognizer: onTap, ), ], ); From 8f2b230cadf60f2886fc009c396528bbdf1c99ba Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Fri, 15 Aug 2025 23:24:56 +0300 Subject: [PATCH 02/10] fix: make sure language changes propagate to language check service --- .../core/controllers/language_tool_controller.dart | 9 +++------ lib/src/domain/language_check_service.dart | 11 +++++++++++ lib/src/implementations/lang_tool_service.dart | 8 ++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/src/core/controllers/language_tool_controller.dart b/lib/src/core/controllers/language_tool_controller.dart index 34f2a62..71876d1 100644 --- a/lib/src/core/controllers/language_tool_controller.dart +++ b/lib/src/core/controllers/language_tool_controller.dart @@ -22,9 +22,6 @@ class LanguageToolController extends TextEditingController { /// Color scheme to highlight mistakes final HighlightStyle highlightStyle; - /// Create an instance of [LanguageToolClient] instance - final _languageToolClient = LanguageToolClient(); - /// Create an instance of [KeepLatestResponseService] /// to handle asynchronous operations final _latestResponseService = KeepLatestResponseService(); @@ -53,10 +50,10 @@ class LanguageToolController extends TextEditingController { /// /// A language code like en-US, de-DE, fr, or auto to guess /// the language automatically. - String get language => _languageToolClient.language; + String get language => _languageCheckService?.language ?? 'auto'; set language(String language) { - _languageToolClient.language = language; + _languageCheckService?.language = language; } /// An error that may have occurred during the API fetch. @@ -89,7 +86,7 @@ class LanguageToolController extends TextEditingController { _languageCheckService = _getLanguageCheckService( delayType: delayType, delay: delay, - languageToolClient: _languageToolClient, + languageToolClient: LanguageToolClient(), ); } diff --git a/lib/src/domain/language_check_service.dart b/lib/src/domain/language_check_service.dart index 6bb796c..1ccd56f 100644 --- a/lib/src/domain/language_check_service.dart +++ b/lib/src/domain/language_check_service.dart @@ -3,6 +3,17 @@ import 'package:languagetool_textfield/src/utils/result.dart'; /// A base language check service. abstract class LanguageCheckService { + /// Gets the current language code used for language checking. + /// + /// Returns a string representing the language code (e.g., 'en-US', 'de-DE'). + String get language; + + /// Sets the language code to be used for language checking. + /// + /// [language] A string representing the language code (e.g., 'en-US', 'de-DE'). + /// This determines which language rules will be applied during text analysis. + set language(String language); + /// Creates a new instance of the [LanguageCheckService] class. const LanguageCheckService(); diff --git a/lib/src/implementations/lang_tool_service.dart b/lib/src/implementations/lang_tool_service.dart index 9cd9e9c..2cce064 100644 --- a/lib/src/implementations/lang_tool_service.dart +++ b/lib/src/implementations/lang_tool_service.dart @@ -9,6 +9,14 @@ class LangToolService extends LanguageCheckService { /// An instance of this class that is used to interact with LanguageTool API. final LanguageToolClient languageTool; + @override + String get language => languageTool.language; + + @override + set language(String language) { + languageTool.language = language; + } + /// Creates a new instance of the [LangToolService]. LangToolService(this.languageTool); From cdadc3163f116a45da2249ce243593507c705042 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Sat, 16 Aug 2025 00:15:35 +0300 Subject: [PATCH 03/10] docs: add changelog chore: bump version --- CHANGELOG.md | 4 ++++ pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35cd6f0..feec0bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.0 + +- Allow overriding `languageCheckService` + ## 1.0.0 - BREAKING: require flutter 3.27.0 or higher diff --git a/pubspec.yaml b/pubspec.yaml index d475570..d1488af 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: languagetool_textfield description: The LanguageTool TextField package is a spell-checker designed for Flutter apps. This is useful for apps that need text input like messaging, notes, and email. -version: 1.0.0 +version: 1.1.0 homepage: https://github.com/solid-software/languagetool_textfield/ environment: From 3031fe1911890b1f6f1e334c974f713cf2e51ad5 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Tue, 19 Aug 2025 11:38:51 +0300 Subject: [PATCH 04/10] docs: squash chnages with v1.0.0 --- CHANGELOG.md | 7 ++----- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 747ed4d..c320783 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,10 @@ -## 1.1.0 - -- Add `isEnabled` to toggle spell check -- Allow overriding `languageCheckService` - ## 1.0.0 - BREAKING: require flutter 3.27.0 or higher - BREAKING: require dart 3.0.0 or higher - BREAKING: rename autoFocus to autofocus to match `TextField`'s naming +- Allow overriding `languageCheckService` +- Add `isEnabled` to toggle spell check - Add missing properties from flutter's `TextField` - autofillHints - autofocus diff --git a/pubspec.yaml b/pubspec.yaml index d1488af..d475570 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: languagetool_textfield description: The LanguageTool TextField package is a spell-checker designed for Flutter apps. This is useful for apps that need text input like messaging, notes, and email. -version: 1.1.0 +version: 1.0.0 homepage: https://github.com/solid-software/languagetool_textfield/ environment: From 054459f12050507333c679b9551b86b62a4cf420 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 11:34:10 +0300 Subject: [PATCH 05/10] refactor: merge named constructor with the unnamed one --- .../controllers/language_tool_controller.dart | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/lib/src/core/controllers/language_tool_controller.dart b/lib/src/core/controllers/language_tool_controller.dart index 04632b5..3c0694f 100644 --- a/lib/src/core/controllers/language_tool_controller.dart +++ b/lib/src/core/controllers/language_tool_controller.dart @@ -91,49 +91,37 @@ class LanguageToolController extends TextEditingController { super.value = newValue; } - /// Controller constructor + /// Controller constructor. /// - /// [highlightStyle] - Color scheme to highlight mistakes - /// [delayType] - Represents the type of delay for language checking. + /// [highlightStyle] - Color scheme to highlight mistakes. /// + /// [delayType] - Represents the type of delay for language checking. /// [DelayType.debouncing] - Calls a function when a user hasn't carried out /// the event in a specific amount of time. - /// /// [DelayType.throttling] - Calls a function at intervals of a specified /// amount of time while the user is carrying out the event. - /// [delay] - Represents the duration of the delay for language checking. /// + /// [delay] - Represents the duration of the delay for language checking. /// If the delay is [Duration.zero], no delaying is applied. + /// + /// You can optionally provide a custom [languageCheckService] to fully control + /// how text is analyzed and processed. When provided, [delayType] and [delay] + /// are ignored. LanguageToolController({ bool isEnabled = true, this.highlightStyle = const HighlightStyle(), DelayType delayType = DelayType.debouncing, Duration delay = Duration.zero, + LanguageCheckService? languageCheckService, }) : _isEnabled = isEnabled { - _languageCheckService = _getLanguageCheckService( - delayType: delayType, - delay: delay, - languageToolClient: LanguageToolClient(), - ); + _languageCheckService = languageCheckService ?? + _getLanguageCheckService( + delayType: delayType, + delay: delay, + languageToolClient: LanguageToolClient(), + ); } - /// Creates a [LanguageToolController] with a custom [LanguageCheckService]. - /// - /// This constructor allows you to provide your own implementation of the - /// language checking service, giving you full control over how text is - /// analyzed and processed. - /// - /// Parameters: - /// * [languageCheckService] - The service responsible for performing language - /// checks and grammar validation. This parameter is required. - /// * [highlightStyle] - Color scheme to highlight mistakes - LanguageToolController.withService({ - required LanguageCheckService languageCheckService, - bool isEnabled = true, - this.highlightStyle = const HighlightStyle(), - }) : _languageCheckService = languageCheckService, - _isEnabled = isEnabled; - static LanguageCheckService _getLanguageCheckService({ required DelayType delayType, required Duration delay, From 9157f8c39b0defe6c3dda6d6e2945980fad67594 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 11:44:57 +0300 Subject: [PATCH 06/10] refactor!: hide debouncing and throttling fields from public API refactor!: rename baseService to _languageCheckService move debounce and throttling decorators to wrappers folder rename LangToolService to LanguageToolService --- lib/languagetool_textfield.dart | 6 +-- .../controllers/language_tool_controller.dart | 16 ++------ .../debounce_lang_tool_service.dart | 38 ------------------ .../language_tool_service.dart} | 6 +-- .../debounce_language_tool_service.dart | 40 +++++++++++++++++++ .../throttling_language_tool_service.dart} | 28 +++++++------ 6 files changed, 65 insertions(+), 69 deletions(-) delete mode 100644 lib/src/implementations/debounce_lang_tool_service.dart rename lib/src/{implementations/lang_tool_service.dart => language_check_services/language_tool_service.dart} (89%) create mode 100644 lib/src/wrappers/debounce_language_tool_service.dart rename lib/src/{implementations/throttling_lang_tool_service.dart => wrappers/throttling_language_tool_service.dart} (51%) diff --git a/lib/languagetool_textfield.dart b/lib/languagetool_textfield.dart index 6379dc5..56a0208 100644 --- a/lib/languagetool_textfield.dart +++ b/lib/languagetool_textfield.dart @@ -12,9 +12,9 @@ export 'src/domain/highlight_style.dart'; export 'src/domain/language_check_service.dart'; export 'src/domain/mistake.dart'; export 'src/domain/writing_mistake.dart'; -export 'src/implementations/debounce_lang_tool_service.dart'; -export 'src/implementations/lang_tool_service.dart'; -export 'src/implementations/throttling_lang_tool_service.dart'; +export 'src/language_check_services/language_tool_service.dart'; export 'src/presentation/language_tool_text_field.dart'; export 'src/utils/mistake_popup.dart'; export 'src/utils/popup_overlay_renderer.dart'; +export 'src/wrappers/debounce_language_tool_service.dart'; +export 'src/wrappers/throttling_language_tool_service.dart'; diff --git a/lib/src/core/controllers/language_tool_controller.dart b/lib/src/core/controllers/language_tool_controller.dart index 3c0694f..b04df61 100644 --- a/lib/src/core/controllers/language_tool_controller.dart +++ b/lib/src/core/controllers/language_tool_controller.dart @@ -3,18 +3,10 @@ import 'dart:math'; import 'package:collection/collection.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:languagetool_textfield/src/client/language_tool_client.dart'; -import 'package:languagetool_textfield/src/core/enums/delay_type.dart'; +import 'package:languagetool_textfield/languagetool_textfield.dart'; import 'package:languagetool_textfield/src/core/enums/mistake_type.dart'; -import 'package:languagetool_textfield/src/domain/highlight_style.dart'; -import 'package:languagetool_textfield/src/domain/language_check_service.dart'; -import 'package:languagetool_textfield/src/domain/mistake.dart'; -import 'package:languagetool_textfield/src/implementations/debounce_lang_tool_service.dart'; -import 'package:languagetool_textfield/src/implementations/lang_tool_service.dart'; -import 'package:languagetool_textfield/src/implementations/throttling_lang_tool_service.dart'; import 'package:languagetool_textfield/src/utils/closed_range.dart'; import 'package:languagetool_textfield/src/utils/keep_latest_response_service.dart'; -import 'package:languagetool_textfield/src/utils/mistake_popup.dart'; /// A TextEditingController with overrides buildTextSpan for building /// marked TextSpans with tap recognizer @@ -127,15 +119,15 @@ class LanguageToolController extends TextEditingController { required Duration delay, required LanguageToolClient languageToolClient, }) { - final languageToolService = LangToolService(languageToolClient); + final languageToolService = LanguageToolService(languageToolClient); if (delay == Duration.zero) return languageToolService; switch (delayType) { case DelayType.debouncing: - return DebounceLangToolService(languageToolService, delay); + return DebounceLanguageToolService(languageToolService, delay); case DelayType.throttling: - return ThrottlingLangToolService(languageToolService, delay); + return ThrottlingLanguageToolService(languageToolService, delay); } } diff --git a/lib/src/implementations/debounce_lang_tool_service.dart b/lib/src/implementations/debounce_lang_tool_service.dart deleted file mode 100644 index 057ee9b..0000000 --- a/lib/src/implementations/debounce_lang_tool_service.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:languagetool_textfield/src/domain/language_check_service.dart'; -import 'package:languagetool_textfield/src/domain/mistake.dart'; -import 'package:languagetool_textfield/src/utils/result.dart'; -import 'package:throttling/throttling.dart'; - -/// A language check service with debouncing. -class DebounceLangToolService extends LanguageCheckService { - /// A base language check service. - final LanguageCheckService baseService; - - /// A debouncing used to debounce the API calls. - final Debouncing>?>> debouncing; - - @override - String get language => baseService.language; - - @override - set language(String language) { - baseService.language = language; - } - - /// Creates a new instance of the [DebounceLangToolService] class. - DebounceLangToolService( - this.baseService, - Duration debouncingDuration, - ) : debouncing = Debouncing(duration: debouncingDuration); - - @override - Future>?> findMistakes(String text) async => - await debouncing.debounce(() => baseService.findMistakes(text)); - - // ignore: proper_super_calls - @override - Future dispose() async { - debouncing.close(); - await baseService.dispose(); - } -} diff --git a/lib/src/implementations/lang_tool_service.dart b/lib/src/language_check_services/language_tool_service.dart similarity index 89% rename from lib/src/implementations/lang_tool_service.dart rename to lib/src/language_check_services/language_tool_service.dart index 2cce064..344a8fd 100644 --- a/lib/src/implementations/lang_tool_service.dart +++ b/lib/src/language_check_services/language_tool_service.dart @@ -5,7 +5,7 @@ import 'package:languagetool_textfield/src/domain/writing_mistake.dart'; import 'package:languagetool_textfield/src/utils/result.dart'; /// An implementation of language check service with language tool service. -class LangToolService extends LanguageCheckService { +class LanguageToolService extends LanguageCheckService { /// An instance of this class that is used to interact with LanguageTool API. final LanguageToolClient languageTool; @@ -17,8 +17,8 @@ class LangToolService extends LanguageCheckService { languageTool.language = language; } - /// Creates a new instance of the [LangToolService]. - LangToolService(this.languageTool); + /// Creates a new instance of the [LanguageToolService]. + LanguageToolService(this.languageTool); @override Future>> findMistakes(String text) async { diff --git a/lib/src/wrappers/debounce_language_tool_service.dart b/lib/src/wrappers/debounce_language_tool_service.dart new file mode 100644 index 0000000..02670e5 --- /dev/null +++ b/lib/src/wrappers/debounce_language_tool_service.dart @@ -0,0 +1,40 @@ +import 'package:languagetool_textfield/src/domain/language_check_service.dart'; +import 'package:languagetool_textfield/src/domain/mistake.dart'; +import 'package:languagetool_textfield/src/utils/result.dart'; +import 'package:throttling/throttling.dart'; + +/// A language check service with debouncing. +class DebounceLanguageToolService extends LanguageCheckService { + /// A base language check service. + final LanguageCheckService _languageCheckService; + + /// A debouncing used to debounce the API calls. + final Debouncing>?>> _debouncing; + + @override + String get language => _languageCheckService.language; + + @override + set language(String language) { + _languageCheckService.language = language; + } + + /// Creates a new instance of the [DebounceLanguageToolService] class. + DebounceLanguageToolService( + this._languageCheckService, + Duration debouncingDuration, + ) : _debouncing = Debouncing(duration: debouncingDuration); + + @override + Future>?> findMistakes(String text) async { + return await _debouncing + .debounce(() => _languageCheckService.findMistakes(text)); + } + + // ignore: proper_super_calls + @override + Future dispose() async { + _debouncing.close(); + await _languageCheckService.dispose(); + } +} diff --git a/lib/src/implementations/throttling_lang_tool_service.dart b/lib/src/wrappers/throttling_language_tool_service.dart similarity index 51% rename from lib/src/implementations/throttling_lang_tool_service.dart rename to lib/src/wrappers/throttling_language_tool_service.dart index 17ada78..15eaea5 100644 --- a/lib/src/implementations/throttling_lang_tool_service.dart +++ b/lib/src/wrappers/throttling_language_tool_service.dart @@ -4,36 +4,38 @@ import 'package:languagetool_textfield/src/utils/result.dart'; import 'package:throttling/throttling.dart'; /// A language check service with debouncing. -class ThrottlingLangToolService extends LanguageCheckService { +class ThrottlingLanguageToolService extends LanguageCheckService { /// A base language check service that is used to interact /// with the language check API. - final LanguageCheckService baseService; + final LanguageCheckService _languageCheckService; /// A throttling used to throttle the API calls. - final Throttling>?>> throttling; + final Throttling>?>> _throttling; @override - String get language => baseService.language; + String get language => _languageCheckService.language; @override set language(String language) { - baseService.language = language; + _languageCheckService.language = language; } - /// Creates a new instance of the [ThrottlingLangToolService] class. - ThrottlingLangToolService( - this.baseService, + /// Creates a new instance of the [ThrottlingLanguageToolService] class. + ThrottlingLanguageToolService( + this._languageCheckService, Duration throttlingDuration, - ) : throttling = Throttling(duration: throttlingDuration); + ) : _throttling = Throttling(duration: throttlingDuration); @override - Future>?> findMistakes(String text) async => - throttling.throttle(() => baseService.findMistakes(text)); + Future>?> findMistakes(String text) async { + return await _throttling + .throttle(() => _languageCheckService.findMistakes(text)); + } // ignore: proper_super_calls @override Future dispose() async { - throttling.close(); - await baseService.dispose(); + _throttling.close(); + await _languageCheckService.dispose(); } } From 978ec9ff792fc764ca6d5cb053111ba6588bdcac Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 11:46:04 +0300 Subject: [PATCH 07/10] docs: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c320783..9a9b078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ - BREAKING: require flutter 3.27.0 or higher - BREAKING: require dart 3.0.0 or higher - BREAKING: rename autoFocus to autofocus to match `TextField`'s naming +- potentially BREAKING: remove `delayType` and `delay` fields from `LanguageToolController` +- potentially BREAKING: hide baseService and debouncing/throttling from Debouncing and Throttling LanguageService wrappers - Allow overriding `languageCheckService` - Add `isEnabled` to toggle spell check - Add missing properties from flutter's `TextField` From 487e96bf68f088a555560004e361569bb92837e3 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 17:58:00 +0300 Subject: [PATCH 08/10] rename throttling/debounce language tool service to language check service --- lib/src/core/controllers/language_tool_controller.dart | 4 ++-- ...ol_service.dart => debounce_language_check_service.dart} | 6 +++--- ..._service.dart => throttling_language_check_service.dart} | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) rename lib/src/wrappers/{debounce_language_tool_service.dart => debounce_language_check_service.dart} (86%) rename lib/src/wrappers/{throttling_language_tool_service.dart => throttling_language_check_service.dart} (87%) diff --git a/lib/src/core/controllers/language_tool_controller.dart b/lib/src/core/controllers/language_tool_controller.dart index b04df61..40867a4 100644 --- a/lib/src/core/controllers/language_tool_controller.dart +++ b/lib/src/core/controllers/language_tool_controller.dart @@ -125,9 +125,9 @@ class LanguageToolController extends TextEditingController { switch (delayType) { case DelayType.debouncing: - return DebounceLanguageToolService(languageToolService, delay); + return DebounceLanguageCheckService(languageToolService, delay); case DelayType.throttling: - return ThrottlingLanguageToolService(languageToolService, delay); + return ThrottlingLanguageCheckService(languageToolService, delay); } } diff --git a/lib/src/wrappers/debounce_language_tool_service.dart b/lib/src/wrappers/debounce_language_check_service.dart similarity index 86% rename from lib/src/wrappers/debounce_language_tool_service.dart rename to lib/src/wrappers/debounce_language_check_service.dart index 02670e5..3660f04 100644 --- a/lib/src/wrappers/debounce_language_tool_service.dart +++ b/lib/src/wrappers/debounce_language_check_service.dart @@ -4,7 +4,7 @@ import 'package:languagetool_textfield/src/utils/result.dart'; import 'package:throttling/throttling.dart'; /// A language check service with debouncing. -class DebounceLanguageToolService extends LanguageCheckService { +class DebounceLanguageCheckService extends LanguageCheckService { /// A base language check service. final LanguageCheckService _languageCheckService; @@ -19,8 +19,8 @@ class DebounceLanguageToolService extends LanguageCheckService { _languageCheckService.language = language; } - /// Creates a new instance of the [DebounceLanguageToolService] class. - DebounceLanguageToolService( + /// Creates a new instance of the [DebounceLanguageCheckService] class. + DebounceLanguageCheckService( this._languageCheckService, Duration debouncingDuration, ) : _debouncing = Debouncing(duration: debouncingDuration); diff --git a/lib/src/wrappers/throttling_language_tool_service.dart b/lib/src/wrappers/throttling_language_check_service.dart similarity index 87% rename from lib/src/wrappers/throttling_language_tool_service.dart rename to lib/src/wrappers/throttling_language_check_service.dart index 15eaea5..2d637db 100644 --- a/lib/src/wrappers/throttling_language_tool_service.dart +++ b/lib/src/wrappers/throttling_language_check_service.dart @@ -4,7 +4,7 @@ import 'package:languagetool_textfield/src/utils/result.dart'; import 'package:throttling/throttling.dart'; /// A language check service with debouncing. -class ThrottlingLanguageToolService extends LanguageCheckService { +class ThrottlingLanguageCheckService extends LanguageCheckService { /// A base language check service that is used to interact /// with the language check API. final LanguageCheckService _languageCheckService; @@ -20,8 +20,8 @@ class ThrottlingLanguageToolService extends LanguageCheckService { _languageCheckService.language = language; } - /// Creates a new instance of the [ThrottlingLanguageToolService] class. - ThrottlingLanguageToolService( + /// Creates a new instance of the [ThrottlingLanguageCheckService] class. + ThrottlingLanguageCheckService( this._languageCheckService, Duration throttlingDuration, ) : _throttling = Throttling(duration: throttlingDuration); From ebdfdb2eb02801d038cf1ae064c3c17a39b602df Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 17:58:07 +0300 Subject: [PATCH 09/10] docs: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a9b078..c345970 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - BREAKING: rename autoFocus to autofocus to match `TextField`'s naming - potentially BREAKING: remove `delayType` and `delay` fields from `LanguageToolController` - potentially BREAKING: hide baseService and debouncing/throttling from Debouncing and Throttling LanguageService wrappers +- potentially BREAKING: rename `DebounceLanguageToolService` to `DebounceLanguageCheckService` +- potentially BREAKING: rename `ThrottleLanguageToolService` to `ThrottleLanguageCheckService` - Allow overriding `languageCheckService` - Add `isEnabled` to toggle spell check - Add missing properties from flutter's `TextField` From 829094865219c1c3ab404c08e593d6aa38aa85f2 Mon Sep 17 00:00:00 2001 From: Andrew Bekhiet Date: Thu, 28 Aug 2025 18:03:20 +0300 Subject: [PATCH 10/10] fix: rename export --- lib/languagetool_textfield.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/languagetool_textfield.dart b/lib/languagetool_textfield.dart index 56a0208..fa751af 100644 --- a/lib/languagetool_textfield.dart +++ b/lib/languagetool_textfield.dart @@ -16,5 +16,5 @@ export 'src/language_check_services/language_tool_service.dart'; export 'src/presentation/language_tool_text_field.dart'; export 'src/utils/mistake_popup.dart'; export 'src/utils/popup_overlay_renderer.dart'; -export 'src/wrappers/debounce_language_tool_service.dart'; -export 'src/wrappers/throttling_language_tool_service.dart'; +export 'src/wrappers/debounce_language_check_service.dart'; +export 'src/wrappers/throttling_language_check_service.dart';