flutter_custom_utils 0.4.17 copy "flutter_custom_utils: ^0.4.17" to clipboard
flutter_custom_utils: ^0.4.17 copied to clipboard

Streamline your code and enhance personal utility with this meticulously crafted Flutter package, tailored to simplify your development tasks. and commercial use


pub package


utilities

  1. Pick file and crop without loosing quality

    cPickAndCropImage(
        context,
        cropDisable: false,
        aspectRatio: 1.7,
        cancelButton: () {
            setState(() {
                croppedImg = null;
            });
            Navigator.of(context).pop();
        },
        okButton: (Uint8List data, String fileName) {
            /// selected file name
            debugPrint(fileName);
            setState(() {
                croppedImg = data;
                /// Load image to ui using 'Image.memory(croppedImg)'
            });
            Navigator.of(context).pop();
        },
    ),
    
  2. get device id in all available devices platform (android, ios, windows, linux, mac, web(get info details))

     await cGetDeviceId()
    
  3. Widget to png

     cTakePicture(GlobalKey);
     // wrap with RepaintBoundary then use key to create image
     RepaintBoundary(
         key: GlobalKey,
         child:Text('data'),
     )
    
  4. flutter platform

    just call these functions anywhere

     cIsAndroid
     cIsIOS
     cIsLinux
     cIsWindows
     cIsMacOS
     cIsWeb
     cIsFuchsia
    
  5. flutter url structure

    https://repad.dev/splash remove hash from url (https://repad.dev/#/splash)

    void main(){
        // Here we set the URL strategy for our web app.
        cSetPathUrl();
        runApp(MyApp());
    }
    

for-GridView

Make a responsive gridView by using both 1 and 2

provide discardSize to minus size from calculation

  1. Based on your static design's width, calculate the responsive grid item count.

    crossAxisCount: cGetResCrossCountGrid(
        context: context,
        width: 180,
    ),
    
  2. For responsive grid item aspect ratio, it should be derived from your static design based on height and width.

    childAspectRatio: cGetResGridRatio(
        context: context,
        height: 165,
        width: 180,
    ),
    
  3. For normal grid aspect ratio > Having this aspect ratio will never break in larger or smaller devices

    crossAxisCount: 2,
    childAspectRatio: cGetGridRatio(
        crossAxisCount: 2,
        context: context,
        height: 165,
        width: 180,
    ),
    

    Your provided height and width determine how it works


for-GridView

    cFormUrlEncode({'':''});

for-duration, delay

  1. For duration and delay

        void splash() {
            // cDays, cHours, cMinutes, cSeconds, cMilliseconds
            2.cSeconds.cDelay(() {
                // code here
            });
    
            // given number in seconds
            3.cDelay(() {
                // code here
            });
        }
    

for-date time

  1. An extension for nullable [TimeOfDay] objects, providing a method to convert them to a formatted string in AM/PM format or display 'Invalid date' if the [TimeOfDay] object is null.

    cTimeOfDayToString()

    TimeOfDay? timeOfDay = TimeOfDay(hour: 14, minute: 30);
    String formattedTime = timeOfDay.cTimeOfDayToString();
    print(formattedTime); // Output: "2:30 PM"
    
    timeOfDay = null;
    formattedTime = timeOfDay.cTimeOfDayToString();
    print(formattedTime); // Output: "Invalid date"
    
  2. This method attempts to parse the input string in both 12-hour and 24-hour time formats and returns a [TimeOfDay] object if parsing is successful, or null if the string cannot be parsed as a valid time.

    cToTimeOfDay()

    String timeString = "2:30 PM";
    TimeOfDay? timeOfDay = timeString.cToTimeOfDay();
    
    if (timeOfDay != null) {
        print("Parsed time: $timeOfDay");
    } else {
        print("Invalid time format");
    }
    
  3. This method combines the date part of the current [DateTime] instance with the hour and minute components from the provided [time].

    cApplied()

    final date = DateTime.now();
    final time = TimeOfDay(hour: 15, minute: 30);
    final combinedDateTime = date.cApplied(time);
    print(combinedDateTime); // Output: 2023-09-15:30:00.000
    
  4. Optionally, you can provide a custom [format] string to specify the desired date format. If [format] is not provided, the default format dd/MM/yyyy will be used.

    cGetFormattedDate()

    final date = DateTime.now();
    final formattedDate = date.cGetFormattedDate(format: 'MM-dd-yyyy');
    print(formattedDate); // Output: 09-13-2023
    

    OR #

    String date = '2023-09-13';
    String formattedDate = date.cGetFormattedDate(format: 'MMMM d, y');
    // Result: 'September 13, 2023'
    
  5. This method calculates the difference between the current [DateTime] instance and the current date and time and provides an aging description.

    cDateToAging()

    final pastDate = DateTime(2022, 3, 10);
    final agingString = pastDate.cDateToAging();
    print(agingString); // Output: "1 year ago"
    

    OR #

    String date = '2023-08-01T12:34:56';
    String agingDescription = date.cDateToAging();
    // Result: '1 month ago'
    

for-MediaQuery

  1. Get the MediaQuery
context.cIsTablet
context.cSize    // getSize(context)
context.cMQuery  // mQuery(context)
context.cWidth
context.cHeight
context.cTheme
context.cIsDarkMode
context.cIconColor
context.cTextTheme
context.cOrient   // orientation
context.cIsLand   // landscape
context.cIsPort   // portrait
context.cDevicePixelRatio

more-Utils

  1. utils

    'text'.cToCapitalized
    'text'.cToTitleCase
    'text'.cIsLowerCase
    'text'.cIsAllCap
    'text'.cReverse
    'text'.cIsDigit
    'text'.cIsEmail
    'text'.cIsAlphabetOnly
    'text'.cIsPhoneIND
    'text'.cIsURL
    'text'.cIsPhoneNumber
    'true'.cToBoolean  // 0,1 also available
    '1000'.cToCurrencyIND // ₹ 1,000.00
    '1000'.cToCurrency() // ₹ 1,000
     000.0.cToDistance  // (00 km, 00 m available)
     000.0.cToWeight  // (00 g, 00 kg available)
    
  2. cGetOffer()

     String offer = cGetOffer(offerPrice: 90,ordinalPrice: 100); // 10 %
    
  3. buildString()

     final word = cBuildString((sb) {
         for (var i = 0; i < 10; i++) {
             sb.write(i);
         }
     });  // 0123456789
    

for-list

  1. Get Random item from list

    ['aa', 'bb', 'cc', 'dd'].cRandomSelect.toString()
    
  2. Get first item from list (if list is empty then result will be null)

    ['aa', 'bb', 'cc', 'dd'].cFirst
    ['aa', 'bb', 'cc', 'dd'].cFirstWhere((e)=>(type your condition here)))
    

for-color

  1. This extension provides a method to convert a Flutter Color object to its hexadecimal representation with an optional leading hash sign. The resulting hexadecimal string includes the alpha, red, green, and blue components of the color.

    final color = Color(0xFF42A5F5);
    final hexString = color.cToHex(); // Returns: "#FF42A5F5"
    
  2. This extension provides a method to convert a hexadecimal color code represented as a String into a Flutter Color object. The color code can optionally include a leading hash sign ('#'). If the input color code has 6 or 7 characters (with or without the hash sign), the method will assume it represents a color with an alpha component and append 'ff' to the color code to make it fully opaque.

    final colorCode = '#FF42A5F5';
    final color = colorCode.cToColor(); // Returns: Color(0xFF42A5F5)
    

for-widget

  1. Allows you to handle (padding/margin)

    Text('data').cPadZero // cMargZero
    Text('data').cPadAll(10) // cMargAll
    Text('data').cPadOnly(l: 10, r: 10, t: 10, b: 10,) // cMargOnly
    Text('data').cPadSymmetric(h: 10, v: 10,), // cMargSymmetric
    
  2. Allows you to handle ClipRRect

    Container().cClipAll(10)
    Container().cClipHorizontal(l:10, r:10,)
    Container().cClipVertical(t:10, b:10,)
    Container().cClipOnly(tl: 10, tr: 10, bl: 10, br: 10,)
    
  3. Allows you to insert widgets inside a CustomScrollView

    Text('data').cToSliver
    
  4. More widgets

    Text('data').cVisible(true)
    Text('data').cOpacity(0.3)
    Text('data').cAbsorb(true)
    Text('data').cShadow()
    Text('data').cHero(tag)
    Text('data').cSizedBox(h:10,w:10)
    
  5. Allows you to handle Alignment

    Text('data').cAlignment(Alignment.topCenter)
    Text('data').cPosition(l: 10, r: 10, t: 10, b: 10,)
    Text('data').cToCenter
    Text('data').cExpand(2)
    
  6. For PreferredSize

    Text('data').cPreferSize(20)
    Text('data').cAspectRatio(1.2)
    

Alt

15
likes
0
pub points
63%
popularity

Publisher

verified publisherrepad.dev

Streamline your code and enhance personal utility with this meticulously crafted Flutter package, tailored to simplify your development tasks. and commercial use

Homepage
Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

crop_image, device_info_plus, file_picker, flutter, flutter_web_plugins, intl

More

Packages that depend on flutter_custom_utils