From 5eacf21c5a1fcfec9dd2e24bf8fc384e622df798 Mon Sep 17 00:00:00 2001 From: nazarski <110051407+nazarski@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:39:56 +0300 Subject: [PATCH 1/3] Test API and initialize package --- example/lib/app.dart | 30 ++++++++++++++++++- lib/domain/mistake.dart | 6 ++++ .../debounce_lang_tool_service.dart | 10 +++++-- lib/languagetool_textfield.dart | 9 ++++++ .../language_tool_text_field.dart | 18 ++++++++++- 5 files changed, 68 insertions(+), 5 deletions(-) diff --git a/example/lib/app.dart b/example/lib/app.dart index f3d9ca4..af4d717 100644 --- a/example/lib/app.dart +++ b/example/lib/app.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:languagetool_textfield/languagetool_textfield.dart'; +/// Example App widget class App extends StatefulWidget { + /// Initial constructor const App({super.key}); @override @@ -8,8 +11,33 @@ class App extends StatefulWidget { } class _AppState extends State { + final _languageTool = LanguageTool(); + DebounceLangToolService? _debouncedLangService; + + void _initializeLangService() { + _debouncedLangService = DebounceLangToolService( + LangToolService(_languageTool), + const Duration(milliseconds: 500), + ); + } + + @override + void initState() { + _initializeLangService(); + super.initState(); + } + @override Widget build(BuildContext context) { - return const Placeholder(); + return Material( + child: LanguageToolTextField( + langService: _debouncedLangService!, + style: TextStyle(), + decoration: InputDecoration(), + mistakeBuilder: (){ + return Container(); + }, + ), + ); } } diff --git a/lib/domain/mistake.dart b/lib/domain/mistake.dart index ecbd3a8..9433887 100644 --- a/lib/domain/mistake.dart +++ b/lib/domain/mistake.dart @@ -25,4 +25,10 @@ class Mistake { required this.length, this.replacements = const [], }); + + @override + String toString() { + return 'Mistake{message: $message, type: $type, offset: $offset, ' + 'length: $length, replacements: $replacements}'; + } } diff --git a/lib/implementations/debounce_lang_tool_service.dart b/lib/implementations/debounce_lang_tool_service.dart index ed14755..5b4c753 100644 --- a/lib/implementations/debounce_lang_tool_service.dart +++ b/lib/implementations/debounce_lang_tool_service.dart @@ -17,7 +17,11 @@ class DebounceLangToolService extends LanguageCheckService { ) : debouncing = Debouncing(duration: debouncingDuration); @override - Future> findMistakes(String text) => - debouncing.debounce(() => baseService.findMistakes(text)) - as Future>; + Future> findMistakes(String text)async { + final value = await debouncing.debounce(() { + return baseService.findMistakes(text); + }) as List?; + + return value ?? []; + } } diff --git a/lib/languagetool_textfield.dart b/lib/languagetool_textfield.dart index abe7c4c..d3178aa 100644 --- a/lib/languagetool_textfield.dart +++ b/lib/languagetool_textfield.dart @@ -1 +1,10 @@ library languagetool_textfield; + +export 'package:language_tool/language_tool.dart'; + +export 'domain/language_check_service.dart'; +export 'domain/mistake.dart'; +export 'implementations/debounce_lang_tool_service.dart'; +export 'implementations/lang_tool_service.dart'; +export 'implementations/throttling_lang_tool_service.dart'; +export "presentation/language_tool_text_field.dart"; diff --git a/lib/presentation/language_tool_text_field.dart b/lib/presentation/language_tool_text_field.dart index 0652baf..1a1526e 100644 --- a/lib/presentation/language_tool_text_field.dart +++ b/lib/presentation/language_tool_text_field.dart @@ -29,8 +29,24 @@ class LanguageToolTextField extends StatefulWidget { } class _LanguageToolTextFieldState extends State { + // final TextEditingController _controller = TextEditingController(); + + Future _check(String text) async { + final list = await widget.langService.findMistakes(text); + print(list); + } + @override Widget build(BuildContext context) { - return const Placeholder(); + return Padding( + padding: const EdgeInsets.all(24.0), + child: Center( + child: TextFormField( + onChanged: _check, + style: widget.style, + decoration: widget.decoration, + ), + ), + ); } } From a36e2f6bd5bbd8764ed944c1e073d93c82204d80 Mon Sep 17 00:00:00 2001 From: nazarski <110051407+nazarski@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:59:35 +0300 Subject: [PATCH 2/3] Rewrite without null assertion operator --- example/lib/app.dart | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/example/lib/app.dart b/example/lib/app.dart index af4d717..5fbd724 100644 --- a/example/lib/app.dart +++ b/example/lib/app.dart @@ -11,30 +11,23 @@ class App extends StatefulWidget { } class _AppState extends State { - final _languageTool = LanguageTool(); - DebounceLangToolService? _debouncedLangService; + static final LanguageTool _languageTool = LanguageTool(); + final DebounceLangToolService _debouncedLangService; - void _initializeLangService() { - _debouncedLangService = DebounceLangToolService( - LangToolService(_languageTool), - const Duration(milliseconds: 500), - ); - } - - @override - void initState() { - _initializeLangService(); - super.initState(); - } + _AppState() + : _debouncedLangService = DebounceLangToolService( + LangToolService(_languageTool), + const Duration(milliseconds: 500), + ); @override Widget build(BuildContext context) { return Material( child: LanguageToolTextField( - langService: _debouncedLangService!, + langService: _debouncedLangService, style: TextStyle(), decoration: InputDecoration(), - mistakeBuilder: (){ + mistakeBuilder: () { return Container(); }, ), From 92e31e5c802aeaa553c1b139e3cae33c4a386917 Mon Sep 17 00:00:00 2001 From: nazarski <110051407+nazarski@users.noreply.github.com> Date: Wed, 26 Apr 2023 14:30:09 +0300 Subject: [PATCH 3/3] Format fix --- example/lib/app.dart | 4 ++-- lib/implementations/debounce_lang_tool_service.dart | 6 +++--- lib/presentation/language_tool_text_field.dart | 4 +++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/example/lib/app.dart b/example/lib/app.dart index 5fbd724..fe177ce 100644 --- a/example/lib/app.dart +++ b/example/lib/app.dart @@ -25,8 +25,8 @@ class _AppState extends State { return Material( child: LanguageToolTextField( langService: _debouncedLangService, - style: TextStyle(), - decoration: InputDecoration(), + style: const TextStyle(), + decoration: const InputDecoration(), mistakeBuilder: () { return Container(); }, diff --git a/lib/implementations/debounce_lang_tool_service.dart b/lib/implementations/debounce_lang_tool_service.dart index 5b4c753..7aabc2d 100644 --- a/lib/implementations/debounce_lang_tool_service.dart +++ b/lib/implementations/debounce_lang_tool_service.dart @@ -17,11 +17,11 @@ class DebounceLangToolService extends LanguageCheckService { ) : debouncing = Debouncing(duration: debouncingDuration); @override - Future> findMistakes(String text)async { - final value = await debouncing.debounce(() { + Future> findMistakes(String text) async { + final value = await debouncing.debounce(() { return baseService.findMistakes(text); }) as List?; - return value ?? []; + return value ?? []; } } diff --git a/lib/presentation/language_tool_text_field.dart b/lib/presentation/language_tool_text_field.dart index 1a1526e..c82895f 100644 --- a/lib/presentation/language_tool_text_field.dart +++ b/lib/presentation/language_tool_text_field.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:languagetool_textfield/domain/language_check_service.dart'; @@ -33,7 +35,7 @@ class _LanguageToolTextFieldState extends State { Future _check(String text) async { final list = await widget.langService.findMistakes(text); - print(list); + log(list.toString()); } @override