Skip to content

Commit

Permalink
Added dispose to the LanguageCheckService
Browse files Browse the repository at this point in the history
This should fix the potential memory leaks from using the `Throttling` and `Debounce` classes.
  • Loading branch information
mitryp committed May 25, 2023
1 parent d922d5a commit ff78b7c
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/core/controllers/colored_text_editing_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ class ColoredTextEditingController extends TextEditingController {
);
}

@override
void dispose() {
languageCheckService.dispose();
super.dispose();
}

/// Replaces mistake with given replacement
void replaceMistake(Mistake mistake, String replacement) {
text = text.replaceRange(mistake.offset, mistake.endOffset, replacement);
Expand Down
6 changes: 6 additions & 0 deletions lib/domain/language_check_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,10 @@ abstract class LanguageCheckService {

/// Returns found mistakes in the given [text].
Future<List<Mistake>> findMistakes(String text);

/// Disposes resources of this [LanguageCheckService].
Future<void> dispose() async {
// does nothing by default, but implementations may need to use it
return;
}
}
7 changes: 7 additions & 0 deletions lib/implementations/debounce_lang_tool_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,11 @@ class DebounceLangToolService extends LanguageCheckService {

return value ?? [];
}

@override
Future<void> dispose() async {
await debouncing.close();

return baseService.dispose();
}
}
7 changes: 7 additions & 0 deletions lib/implementations/throttling_lang_tool_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,11 @@ class ThrottlingLangToolService extends LanguageCheckService {
Future<List<Mistake>> findMistakes(String text) =>
throttling.throttle(() => baseService.findMistakes(text))
as Future<List<Mistake>>;

@override
Future<void> dispose() async {
await throttling.close();

return baseService.dispose();
}
}

0 comments on commit ff78b7c

Please sign in to comment.