utility_library 1.0.2 copy "utility_library: ^1.0.2" to clipboard
utility_library: ^1.0.2 copied to clipboard

Simplify code cleaning

example/lib/main.dart

import 'package:example/json_serializable.dart';
import 'package:flutter/material.dart';
import 'package:utility_library/utils/color_utils.dart';
import 'package:utility_library/utils/date_time_utils.dart';
import 'package:utility_library/utils/extension_utils.dart';
import 'package:utility_library/utils/num_extensions.dart';
import 'package:utility_library/utils/predefined_date_formats.dart';
import 'package:utility_library/utils/json_extensions.dart';

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


  /// json_extensions.dart
  User user = User(name: 'Alice', age: 28);
  String userJson = serialize(user);
  print('Serialized User: $userJson');

  User deserializedUser = deserialize<User>(userJson, User.fromJson);
  print('Deserialized User: ${deserializedUser.name}');


  /// color_utils.dart
  AppColors.primaryColor = Color(0xff02a4ff); /// Your app color
  AppColors.secondaryColor = Color(0xffffffff); /// Your app color


  /// num_extensions.dart
  double myNumber = 123.456;
  print(myNumber.reFormat(formatDigits: '000', asFixedNumber: 3));  // Using the extension method


  /// predefined_date_formats.dart
  DateTime nowFormats = DateTime.now();

  print('Standard DateTime: ${nowFormats.format(pattern: PredefinedDateFormats.standardDateTime.pattern)}');
  print('Date Only: ${nowFormats.format(pattern: PredefinedDateFormats.dateOnly.pattern)}');
  print('Time Only: ${nowFormats.format(pattern: PredefinedDateFormats.timeOnly.pattern)}');
  print('Custom DateTime: ${nowFormats.format(pattern: PredefinedDateFormats.customDateTime.pattern)}');
  print('Verbose DateTime with Day of Week: ${nowFormats.format(pattern: PredefinedDateFormats.verboseDateTimeWithDayOfWeek.pattern)}');
  print('Year and Full Month: ${nowFormats.format(pattern: PredefinedDateFormats.yearAndFullMonth.pattern)}');


  /// date_time_utils.dart
  // for DateTime
  print('--- for DateTime');  // Separator for readability
  DateTime today = DateTime.now();

  print('Today is ${today.isLeapYear ? "a" : "not a"} leap year.');
  print('Days in the current month: ${today.daysInMonth}');
  print('Is today the start of the year? ${today.isStartOfYear}');
  print('Is today the end of the year? ${today.isEndOfYear}');
  print('Days to the end of the year: ${today.daysToEndOfYear}');
  print('Is today a weekend? ${today.isWeekend}');


  /// extension_utils.dart
  // for double
  print('--- for double');  // Separator for readability
  List<double> numbersDouble = [3.14159, double.nan, double.infinity, -0.98765];

  for (var number in numbersDouble) {
    print('Processing number: $number');
    print('String or Null: ${number.toStringOrNull()}');
    print('Is the number valid? ${number.isValid}');
    print('Fixed to 2 decimal places: ${number.toFixedOrNull(2)}');
    print('---');  // Separator for readability
  }

  // for int
  print('--- for int');  // Separator for readability
  List<int> numbersInt = [10, -5, 0, 1, 13];

  for (var number in numbersInt) {
    print('Processing number: $number');
    print('Is Even: ${number.isEven}');
    print('Is Odd: ${number.isOdd}');
    print('Factorial: ${number.factorial}');
    print('Is Prime: ${number.isPrime}');
    print('Binary Representation: ${number.toBinary}');
    print('Hexadecimal Representation: ${number.toHex}');
    print('---');  // Separator for readability
  }

  // for String
  print('--- for String');  // Separator for readability
  List<String> textsString = ['hello world', '123', 'A man a plan a canal panama', 'Flutter.dev'];

  for (var text in textsString) {
    print('Processing text: "$text"');
    print('Is Numeric: ${text.isNumeric}');
    print('To Title Case: ${text.toTitleCase}');
    print('Reversed: ${text.reversed}');
    print('Is Palindrome: ${text.isPalindrome}');
    if (text.isNumeric) {
      print('To Base64: ${text.toBase64}');
      print('From Base64: ${text.toBase64.fromBase64()}');
    }
    print('---');  // Separator for readability
  }

  // for List<T>
  print('--- for List<T>');  // Separator for readability
  List<int> numbers = [1, 2, 3, 3, 4];
  List<String> words = ["apple", "banana", "apple", "cherry"];

  // Using the extensions
  print('Numbers (non-null): ${numbers.nonNull}');
  print('Words (reversed): ${words.reversed}');
  print('Are numbers unique? ${numbers.isUnique}');
  print('Are words unique? ${words.isUnique}');
  print('JSON String of words: ${words.toJsonString()}');

  // Transforming numbers to strings
  List<String> stringNumbers = numbers.transform((n) => 'Number $n');
  print('Transformed numbers: $stringNumbers');
}

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // TRY THIS: Try running your application with "flutter run". You'll see
        // the application has a blue toolbar. Then, without quitting the app,
        // try changing the seedColor in the colorScheme below to Colors.green
        // and then invoke "hot reload" (save your changes or press the "hot
        // reload" button in a Flutter-supported IDE, or press "r" if you used
        // the command line to start the app).
        //
        // Notice that the counter didn't reset back to zero; the application
        // state is not lost during the reload. To reset the state, use hot
        // restart instead.
        //
        // This works for code too, not just values: Most code changes can be
        // tested with just a hot reload.
        colorScheme: ColorScheme.fromSeed(seedColor: AppColors.primaryColor),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // TRY THIS: Try changing the color here to a specific color (to
        // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar
        // change color while the other colors stay the same.
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title, style: TextStyle(color: AppColors.secondaryColor)),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: Column(
          // Column is also a layout widget. It takes a list of children and
          // arranges them vertically. By default, it sizes itself to fit its
          // children horizontally, and tries to be as tall as its parent.
          //
          // Column has various properties to control how it sizes itself and
          // how it positions its children. Here we use mainAxisAlignment to
          // center the children vertically; the main axis here is the vertical
          // axis because Columns are vertical (the cross axis would be
          // horizontal).
          //
          // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint"
          // action in the IDE, or press "p" in the console), to see the
          // wireframe for each widget.
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
2
likes
120
points
41
downloads

Publisher

unverified uploader

Weekly Downloads

Simplify code cleaning

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, intl

More

Packages that depend on utility_library