Flutter TextInputFormatter does not do what is intended












0















I have tried to extend the Flutter's TextInputFormatter to add thousand comma separator on the fly as the user types.



import 'package:flutter/services.dart';


class ThousandSeparatorTextInputFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue,
TextEditingValue newValue) {

return newValue.copyWith(
text: _addThousandsSeparator(newValue.text)
);
}

// This adds thousand comma separator
String _addThousandsSeparator(String value) {
RegExp reg = RegExp(r'(d{1,3})(?=(d{3})+(?!d))');
Function determine = (Match match) => '${match[1]},';
return value.replaceAllMapped(reg, determine);
}
}


The problem is when used in the TextField the comma separator appears at the right position the first time, as the user keep typing the separator appears after every digit from the last three.



When the _addThousandSeparator function is used on its own, i.e. on some values, it does work. What am I doing wrong?










share|improve this question





























    0















    I have tried to extend the Flutter's TextInputFormatter to add thousand comma separator on the fly as the user types.



    import 'package:flutter/services.dart';


    class ThousandSeparatorTextInputFormatter extends TextInputFormatter {
    @override
    TextEditingValue formatEditUpdate(
    TextEditingValue oldValue,
    TextEditingValue newValue) {

    return newValue.copyWith(
    text: _addThousandsSeparator(newValue.text)
    );
    }

    // This adds thousand comma separator
    String _addThousandsSeparator(String value) {
    RegExp reg = RegExp(r'(d{1,3})(?=(d{3})+(?!d))');
    Function determine = (Match match) => '${match[1]},';
    return value.replaceAllMapped(reg, determine);
    }
    }


    The problem is when used in the TextField the comma separator appears at the right position the first time, as the user keep typing the separator appears after every digit from the last three.



    When the _addThousandSeparator function is used on its own, i.e. on some values, it does work. What am I doing wrong?










    share|improve this question



























      0












      0








      0








      I have tried to extend the Flutter's TextInputFormatter to add thousand comma separator on the fly as the user types.



      import 'package:flutter/services.dart';


      class ThousandSeparatorTextInputFormatter extends TextInputFormatter {
      @override
      TextEditingValue formatEditUpdate(
      TextEditingValue oldValue,
      TextEditingValue newValue) {

      return newValue.copyWith(
      text: _addThousandsSeparator(newValue.text)
      );
      }

      // This adds thousand comma separator
      String _addThousandsSeparator(String value) {
      RegExp reg = RegExp(r'(d{1,3})(?=(d{3})+(?!d))');
      Function determine = (Match match) => '${match[1]},';
      return value.replaceAllMapped(reg, determine);
      }
      }


      The problem is when used in the TextField the comma separator appears at the right position the first time, as the user keep typing the separator appears after every digit from the last three.



      When the _addThousandSeparator function is used on its own, i.e. on some values, it does work. What am I doing wrong?










      share|improve this question
















      I have tried to extend the Flutter's TextInputFormatter to add thousand comma separator on the fly as the user types.



      import 'package:flutter/services.dart';


      class ThousandSeparatorTextInputFormatter extends TextInputFormatter {
      @override
      TextEditingValue formatEditUpdate(
      TextEditingValue oldValue,
      TextEditingValue newValue) {

      return newValue.copyWith(
      text: _addThousandsSeparator(newValue.text)
      );
      }

      // This adds thousand comma separator
      String _addThousandsSeparator(String value) {
      RegExp reg = RegExp(r'(d{1,3})(?=(d{3})+(?!d))');
      Function determine = (Match match) => '${match[1]},';
      return value.replaceAllMapped(reg, determine);
      }
      }


      The problem is when used in the TextField the comma separator appears at the right position the first time, as the user keep typing the separator appears after every digit from the last three.



      When the _addThousandSeparator function is used on its own, i.e. on some values, it does work. What am I doing wrong?







      dart flutter






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 3 at 14:55







      Amani

















      asked Jan 3 at 11:28









      AmaniAmani

      3,325114573




      3,325114573
























          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
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54021415%2fflutter-textinputformatter-does-not-do-what-is-intended%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
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54021415%2fflutter-textinputformatter-does-not-do-what-is-intended%23new-answer', 'question_page');
          }
          );

          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







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas