simple_text_utils 1.1.0 copy "simple_text_utils: ^1.1.0" to clipboard
simple_text_utils: ^1.1.0 copied to clipboard

Paket utilitas sederhana untuk validasi dan format string di Dart & Flutter.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:simple_text_utils/simple_text_utils.dart';
// Import package Anda
void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Simple Text Utils Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        inputDecorationTheme: const InputDecorationTheme(
          border: OutlineInputBorder(
            borderRadius: BorderRadius.all(Radius.circular(8)),
          ),
        ),
      ),
      home: const ExamplePage(),
    );
  }
}

class ExamplePage extends StatefulWidget {
  const ExamplePage({super.key});

  @override
  State<ExamplePage> createState() => _ExamplePageState();
}

class _ExamplePageState extends State<ExamplePage> {
  final _formKey = GlobalKey<FormState>();
  final _nameController = TextEditingController();
  
  // BARU: Controller dan variabel untuk Rupiah
  final _rupiahController = TextEditingController();
  String _formattedRupiah = '';

  String _formattedName = '';
  String _initials = '';
  String _validationStatus = '';

  @override
  void dispose() {
    _nameController.dispose();
    _rupiahController.dispose(); // BARU: dispose controller
    super.dispose();
  }

  void _formatText() {
    setState(() {
      _formattedName = _nameController.text.toTitleCase();
      _initials = _nameController.text.getInitials();
    });
  }

  // BARU: Fungsi untuk format Rupiah
  void _formatRupiah() {
    setState(() {
      _formattedRupiah = _rupiahController.text.toRupiahFormat();
    });
  }

  void _validateForm() {
    final bool isValid = _formKey.currentState?.validate() ?? false;
    setState(() {
      if (isValid) {
        _validationStatus = 'Form Valid!';
      } else {
        _validationStatus = 'Form Tidak Valid. Perbaiki error di atas.';
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Simple Text Utils Example'),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text('Validator Example:',
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            const SizedBox(height: 16),
            Form(
              key: _formKey,
              child: Column(
                children: [
                  TextFormField(
                    decoration: const InputDecoration(labelText: 'Enter your email'),
                    autovalidateMode: AutovalidateMode.onUserInteraction,
                    validator: (value) {
                      if (!SimpleValidator.isValidEmail(value)) {
                        return 'Please enter a valid email.';
                      }
                      return null;
                    },
                  ),
                  const SizedBox(height: 16),
                  TextFormField(
                    decoration:
                        const InputDecoration(labelText: 'Enter Indonesian Phone'),
                    autovalidateMode: AutovalidateMode.onUserInteraction,
                    validator: (value) {
                      if (!SimpleValidator.isValidIndonesianPhone(value)) {
                        return 'Please enter a valid Indonesian phone number.';
                      }
                      return null;
                    },
                  ),
                  const SizedBox(height: 24),
                  ElevatedButton(
                    onPressed: _validateForm,
                    child: const Text('Validate Form'),
                  ),
                  const SizedBox(height: 16),
                  if (_validationStatus.isNotEmpty)
                    Text(
                      _validationStatus,
                      style: TextStyle(
                        fontSize: 16,
                        color: _validationStatus.contains('Valid!')
                            ? Colors.green.shade700
                            : Colors.red.shade700,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                ],
              ),
            ),
            const Divider(height: 40),
            const Text('Formatter Example:',
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            const SizedBox(height: 16),
            TextField(
              controller: _nameController,
              decoration:
                  const InputDecoration(labelText: 'Enter your full name'),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _formatText,
              child: const Text('Format Name'),
            ),
            const SizedBox(height: 16),
            if (_formattedName.isNotEmpty)
              Text(
                'Title Case: $_formattedName',
                style: const TextStyle(fontSize: 16),
              ),
            if (_initials.isNotEmpty)
              Text(
                'Initials: $_initials',
                style: const TextStyle(fontSize: 16),
              ),
            
            // --- UI BARU UNTUK RUPIAH FORMATTER ---
            const SizedBox(height: 24), // Pemisah
            TextField(
              controller: _rupiahController,
              decoration: const InputDecoration(
                  labelText: 'Enter a number (e.g., 1000000)'),
              keyboardType: TextInputType.number,
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _formatRupiah,
              child: const Text('Format to Rupiah'),
            ),
            const SizedBox(height: 16),
            if (_formattedRupiah.isNotEmpty)
              Text(
                'Rupiah Format: $_formattedRupiah',
                style:
                    const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
              ),
            // --- AKHIR DARI UI BARU ---
          ],
        ),
      ),
    );
  }
}
1
likes
150
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Paket utilitas sederhana untuk validasi dan format string di Dart & Flutter.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on simple_text_utils