首页 > 解决方案 > 如何获取“TextField”的更新?

问题描述

我想在文本表单字段中分隔每个 3 个字符串并显示它
我已经尝试过regex我可以在终端中获取它但我无法在使它看起来像终端的文本表单字段中显示它, 在左侧输入图像描述
我当我打印它时有我想要的东西,但是右手边我有我的 textformfield

我想完全像终端一样显示它,但在 textformfield 中这是我的代码
,如果您需要更多信息,请告诉我

import 'package:flutter/material.dart';

class AddTransication extends StatefulWidget {
  @override
  _AddTransicationState createState() => _AddTransicationState();
}

class _AddTransicationState extends State<AddTransication> {
  RegExp reg_ex = new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))');
  Function mathFunc = (Match match) => '${match[1]},';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Test Screen"),
        actions: <Widget>[
          FlatButton(
            textColor: Colors.white,
            onPressed: () {},
            child: Text("Save"),
            shape: CircleBorder(side: BorderSide(color: Colors.transparent)),
          ),
        ],
      ),
      body: SafeArea(
        child: Form(
          child: Column(
            children: [emailField(reg_ex, mathFunc)],
          ),
        ),
      ),
    );
  }

  Widget emailField(reg_ex, mathFunc) {
    return TextFormField(
      onChanged: (str) {
        String result = str.replaceAllMapped(reg_ex, mathFunc);
        print(' $result');
      },
      keyboardType: TextInputType.emailAddress,
      decoration: InputDecoration(
        labelText: 'Email Address',
        hintText: 'you@example.com',
      ),
    );
  }
}

更新 !

我还希望它返回一个有效的 int,就像我写 1000 时它应该返回 10,000,我已经用正则表达式做到了,但我想在那里显示它

标签: flutterdart

解决方案


您想要显示文本的方式称为“文本屏蔽”。有一个图书馆可以帮助您制作此类文本。

库 1:https ://pub.dev/packages/flutter_masked_text

库 2:https ://pub.dev/packages/mask_text_input_formatter

您可以使用这些库中的任何一个来解决您的问题。祝你好运。


推荐阅读