Flutter CNPJ/CPF格式化插件cnpj_cpf_formatter_nullsafety的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter CNPJ/CPF格式化插件cnpj_cpf_formatter_nullsafety的使用

这个库帮助处理CNPJ和CPF格式化。CNPJ是商业文件,CPF是个人文件,两者都是巴西文档。

使用方法

CPF格式化

TextField(
    decoration: InputDecoration(
    labelText: 'CPF',
    helperText: '仅格式化CPF',
    ),
    inputFormatters: [
    CnpjCpfFormatter(
        eDocumentType: EDocumentType.CPF,
    )
    ],
)

CNPJ格式化

TextField(
    decoration: InputDecoration(
    labelText: 'CNPJ',
    helperText: '仅格式化CNPJ',
    ),
    inputFormatters: [
    CnpjCpfFormatter(
        eDocumentType: EDocumentType.CNPJ,
    )
    ],
)

同时格式化CNPJ和CPF

TextField(
    decoration: InputDecoration(
    labelText: 'CNPJ/CPF',
    helperText: '同时格式化CNPJ和CPF',
    ),
    inputFormatters: [
    CnpjCpfFormatter(
        eDocumentType: EDocumentType.BOTH,
    )
    ],
)

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'package:cnpj_cpf_formatter_nullsafety/cnpj_cpf_formatter_nullsafety.dart';

void main() => runApp(App());

class App extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.all(8),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 仅格式化CPF
            TextField(
              decoration: InputDecoration(
                labelText: 'CPF',
                helperText: '仅格式化CPF',
              ),
              inputFormatters: [
                CnpjCpfFormatter(
                  eDocumentType: EDocumentType.CPF,
                )
              ],
            ),
            SizedBox(
              height: 16,
            ),
            // 仅格式化CNPJ
            TextField(
              decoration: InputDecoration(
                labelText: 'CNPJ',
                helperText: '仅格式化CNPJ',
              ),
              inputFormatters: [
                CnpjCpfFormatter(
                  eDocumentType: EDocumentType.CNPJ,
                )
              ],
            ),
            SizedBox(
              height: 16,
            ),
            // 同时格式化CNPJ和CPF
            TextField(
              decoration: InputDecoration(
                labelText: 'CNPJ/CPF',
                helperText: '同时格式化CNPJ和CPF',
              ),
              inputFormatters: [
                CnpjCpfFormatter(
                  eDocumentType: EDocumentType.BOTH,
                )
              ],
            )
          ],
        ),
      ),
    );
  }
}

更多关于Flutter CNPJ/CPF格式化插件cnpj_cpf_formatter_nullsafety的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter CNPJ/CPF格式化插件cnpj_cpf_formatter_nullsafety的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


cnpj_cpf_formatter_nullsafety 是一个 Flutter 插件,用于在输入 CNPJ 或 CPF 时自动格式化这些号码。它支持空安全(null safety),并且可以轻松地集成到你的 Flutter 应用中。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 cnpj_cpf_formatter_nullsafety 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  cnpj_cpf_formatter_nullsafety: ^1.0.0

然后运行 flutter pub get 来安装插件。

使用插件

在你的 Dart 文件中,导入插件:

import 'package:cnpj_cpf_formatter_nullsafety/cnpj_cpf_formatter_nullsafety.dart';

使用 CnpjCpfFormatter widget

CnpjCpfFormatter 是一个 TextFormField 的包装器,它会自动根据输入的号码类型(CNPJ 或 CPF)进行格式化。

class MyForm extends StatelessWidget {
  final _formKey = GlobalKey<FormState>();
  final _cnpjCpfController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: [
          CnpjCpfFormatter(
            controller: _cnpjCpfController,
            decoration: InputDecoration(
              labelText: 'CNPJ/CPF',
              hintText: 'Digite o CNPJ ou CPF',
            ),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Por favor, insira um CNPJ ou CPF';
              }
              return null;
            },
          ),
          ElevatedButton(
            onPressed: () {
              if (_formKey.currentState!.validate()) {
                // 处理表单提交
                print('CNPJ/CPF: ${_cnpjCpfController.text}');
              }
            },
            child: Text('Enviar'),
          ),
        ],
      ),
    );
  }
}

主要功能

  • 自动格式化: 当用户输入 CNPJ 或 CPF 时,插件会自动添加格式化的符号(如 ./-)。
  • 智能识别: 插件会根据输入的长度自动识别是 CNPJ 还是 CPF,并进行相应的格式化。
  • 空安全: 插件支持空安全,确保在空安全环境中使用时的安全性。

示例

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('CNPJ/CPF Formatter Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: MyForm(),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!