Skip to content

Commit

Permalink
Merge pull request #34 from solid-software/fix/throttling-memory-leak
Browse files Browse the repository at this point in the history
Added `dispose` to the `LanguageCheckService`
  • Loading branch information
mitryp committed May 25, 2023
2 parents d922d5a + 1dc2ae7 commit 9d8c080
Show file tree
Hide file tree
Showing 4 changed files with 24 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;
}
}
6 changes: 6 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,10 @@ class DebounceLangToolService extends LanguageCheckService {

return value ?? [];
}

@override
Future<void> dispose() async {
await debouncing.close();
await baseService.dispose();
}
}
6 changes: 6 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,10 @@ 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();
await baseService.dispose();
}
}

0 comments on commit 9d8c080

Please sign in to comment.