Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions packages/reactive_languagetool_textfield/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,10 @@ class _MyAppState extends State<MyApp> {
ElevatedButton(
child: const Text('Select all text'),
onPressed: () {
if (_controller != null) {
form.control('input').focus();

_controller?.selection = TextSelection(
baseOffset: 0,
extentOffset: _controller?.text.length ?? 0,
final value = form.control('input').value;
if (value != null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Selected text: ${value.toString()}')),
);
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ class ReactiveLanguageToolTextField<T> extends ReactiveFormField<T, String> {
final Duration delay;
final DelayType delayType;

final LanguageToolController? _textController;

/// Creates a [ReactiveLanguageToolTextField] that contains a [LanguageToolTextField].
///
/// Can optionally provide a [formControl] to bind this widget to a control.
Expand Down Expand Up @@ -98,6 +100,7 @@ class ReactiveLanguageToolTextField<T> extends ReactiveFormField<T, String> {
super.validationMessages,
super.valueAccessor,
super.showErrors,
LanguageToolController? controller,
String language = 'auto',
MistakePopup? mistakePopup,
bool alignCenter = true,
Expand Down Expand Up @@ -156,7 +159,8 @@ class ReactiveLanguageToolTextField<T> extends ReactiveFormField<T, String> {
bool enableIMEPersonalizedLearning = true,
bool scribbleEnabled = true,
Widget Function(BuildContext context, String error)? errorBuilder,
}) : super(
}) : _textController = controller,
super(
builder: (ReactiveFormFieldState<T, String> field) {
final state = field as _ReactiveLanguageToolTextFieldState<T>;
final effectiveDecoration = decoration
Expand Down Expand Up @@ -218,7 +222,6 @@ class ReactiveLanguageToolTextField<T> extends ReactiveFormField<T, String> {
minLines: minLines,
expands: expands,
// maxLength: maxLength,
// onChanged: field.didChange,
onTap: onTap,
onTapOutside: onTapOutside,
onTextChange: field.didChange,
Expand Down Expand Up @@ -273,22 +276,35 @@ class _ReactiveLanguageToolTextFieldState<T>

final initialValue = value;

_textController = LanguageToolController(
highlightStyle:
(widget as ReactiveLanguageToolTextField<T>).highlightStyle,
delay: (widget as ReactiveLanguageToolTextField<T>).delay,
delayType: (widget as ReactiveLanguageToolTextField<T>).delayType,
);
final currentWidget = widget as ReactiveLanguageToolTextField<T>;
_textController = currentWidget._textController ??
LanguageToolController(
highlightStyle:
(widget as ReactiveLanguageToolTextField<T>).highlightStyle,
delay: (widget as ReactiveLanguageToolTextField<T>).delay,
delayType: (widget as ReactiveLanguageToolTextField<T>).delayType,
);

WidgetsBinding.instance.addPostFrameCallback((_) {
_textController.text = initialValue?.toString() ?? '';
});
_textController.addListener(_onTextChangeListener);

(widget as ReactiveLanguageToolTextField<T>)
.onControllerInit
?.call(_textController);
}

void _onTextChangeListener() {
final text = _textController.text;
final controlValue = control.value;
final stringValue = controlValue?.toString();

if (stringValue != null && stringValue != text) {
didChange(text);
}
}

@override
void didUpdateWidget(ReactiveFormField<T, String> oldWidget) {
final newControl = _resolveFormControl();
Expand Down Expand Up @@ -331,6 +347,7 @@ class _ReactiveLanguageToolTextFieldState<T>

@override
void dispose() {
_textController.removeListener(_onTextChangeListener);
_unregisterFocusController();
_textController.dispose();
super.dispose();
Expand Down
2 changes: 1 addition & 1 deletion packages/reactive_languagetool_textfield/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: reactive_languagetool_textfield
description: Wrapper around languagetool_textfield to use with reactive_forms.
version: 0.0.2
version: 0.0.3
repository: https://github.com/artflutter/reactive_forms_widgets/tree/master/packages/reactive_languagetool_textfield
issue_tracker: https://github.com/artflutter/reactive_forms_widgets/issues

Expand Down