Pretty Numbers

Pretty Numbers is a Flutter package that formats your numeric input fields beautifully, making them easy to read and visually appealing for your users.

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  pretty_numbers: ^0.0.1

Simple Example


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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Pretty Numbers Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: ExampleForm(),
        ),
      ),
    );
  }
}

class ExampleForm extends StatefulWidget {
  @override
  _ExampleFormState createState() => _ExampleFormState();
}

class _ExampleFormState extends State<ExampleForm> {
  final _controller = TextEditingController();
  final _focusNode = FocusNode();

  @override
  void dispose() {
    _controller.dispose();
    _focusNode.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        PrettyNumbers(
          controller: _controller,
          focusNode: _focusNode,
          hintText: 'Enter amount',
          suffixIcon: Icon(Icons.check_circle),
          prefixIcon: Icon(Icons.attach_money),
        ),
      ],
    );
  }
}


Another Exciting Example

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ComplexExampleScreen(),
    );
  }
}

class ComplexExampleScreen extends StatefulWidget {
  @override
  _ComplexExampleScreenState createState() => _ComplexExampleScreenState();
}

class _ComplexExampleScreenState extends State<ComplexExampleScreen> {
  final _numberController = TextEditingController();
  final _otherFieldController = TextEditingController();
  final _formKey = GlobalKey<FormState>();

  @override
  void dispose() {
    _numberController.dispose();
    _otherFieldController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Exciting Pretty Numbers Example')),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              PrettyNumbers(
                controller: _numberController,
                hintText: 'Enter a number',
                prefixIcon: Icon(Icons.attach_money),
                suffixIcon: Icon(Icons.check),
                focusedBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.green, width: 2.0),
                  borderRadius: BorderRadius.all(Radius.circular(8)),
                ),
                errorBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.red, width: 2.0),
                  borderRadius: BorderRadius.all(Radius.circular(8)),
                ),
                border: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.grey, width: 1.0),
                  borderRadius: BorderRadius.all(Radius.circular(8)),
                ),
                hintStyle: TextStyle(color: Colors.grey, fontSize: 16),
              ),
              SizedBox(height: 20),
              TextFormField(
                controller: _otherFieldController,
                decoration: InputDecoration(
                  labelText: 'Another Field',
                  border: OutlineInputBorder(),
                ),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Please enter some text';
                  }
                  return null;
                },
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    // Process data.
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text('Processing Data')),
                    );
                  }
                },
                child: Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}


Libraries

pretty_numbers