Flutter: @override formatEditUpdate called a second time with previous newValue
If I create a class that extends TextInputFormatter
and override formatEditUpdate(oldValue, newValue)
which generates a result different than newValue
, why is formatEditUpdate
immediately called again with the newValue
set to the newValue
from the previous execution?
The test cases pass because the initial result correctly returns the value from the override, but in an interactive app, after it runs a second time, the cursor location is incorrect because it is based on the newValue
from the first execution instead of the result of the override.
The flow can be seen in the flutter gallery at:
flutter/examples/flutter_gallery/lib/demo/material/text_form_field_demo.dart
if you enter the following print statement above the return on line 333:
print('oldValue: ${oldValue.text} newValue: ${newValue.text} output: ${newText.toString()}');
return TextEditingValue(
Then run the app and enter digits for the material phone number and watch the function get called multiple times after every digit is entered.
flutter
add a comment |
If I create a class that extends TextInputFormatter
and override formatEditUpdate(oldValue, newValue)
which generates a result different than newValue
, why is formatEditUpdate
immediately called again with the newValue
set to the newValue
from the previous execution?
The test cases pass because the initial result correctly returns the value from the override, but in an interactive app, after it runs a second time, the cursor location is incorrect because it is based on the newValue
from the first execution instead of the result of the override.
The flow can be seen in the flutter gallery at:
flutter/examples/flutter_gallery/lib/demo/material/text_form_field_demo.dart
if you enter the following print statement above the return on line 333:
print('oldValue: ${oldValue.text} newValue: ${newValue.text} output: ${newText.toString()}');
return TextEditingValue(
Then run the app and enter digits for the material phone number and watch the function get called multiple times after every digit is entered.
flutter
add a comment |
If I create a class that extends TextInputFormatter
and override formatEditUpdate(oldValue, newValue)
which generates a result different than newValue
, why is formatEditUpdate
immediately called again with the newValue
set to the newValue
from the previous execution?
The test cases pass because the initial result correctly returns the value from the override, but in an interactive app, after it runs a second time, the cursor location is incorrect because it is based on the newValue
from the first execution instead of the result of the override.
The flow can be seen in the flutter gallery at:
flutter/examples/flutter_gallery/lib/demo/material/text_form_field_demo.dart
if you enter the following print statement above the return on line 333:
print('oldValue: ${oldValue.text} newValue: ${newValue.text} output: ${newText.toString()}');
return TextEditingValue(
Then run the app and enter digits for the material phone number and watch the function get called multiple times after every digit is entered.
flutter
If I create a class that extends TextInputFormatter
and override formatEditUpdate(oldValue, newValue)
which generates a result different than newValue
, why is formatEditUpdate
immediately called again with the newValue
set to the newValue
from the previous execution?
The test cases pass because the initial result correctly returns the value from the override, but in an interactive app, after it runs a second time, the cursor location is incorrect because it is based on the newValue
from the first execution instead of the result of the override.
The flow can be seen in the flutter gallery at:
flutter/examples/flutter_gallery/lib/demo/material/text_form_field_demo.dart
if you enter the following print statement above the return on line 333:
print('oldValue: ${oldValue.text} newValue: ${newValue.text} output: ${newText.toString()}');
return TextEditingValue(
Then run the app and enter digits for the material phone number and watch the function get called multiple times after every digit is entered.
flutter
flutter
edited Nov 22 '18 at 1:42
Simpler
asked Nov 22 '18 at 0:54
SimplerSimpler
18311
18311
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422486%2fflutter-override-formateditupdate-called-a-second-time-with-previous-newvalue%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422486%2fflutter-override-formateditupdate-called-a-second-time-with-previous-newvalue%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown