搜尋套件、儲存庫與 APP 分類

GitHub 儲存庫mplifytech/mfy-mplix-all

mplix

mplifytech/mfy-mplix-all open-source repository details.

mplix 專案封面
星標
0
分支
0
最近推送(UTC)
2026年1月30日
專案狀態
未封存

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

🧩 Mplix

Mplix Banner

Mplix is a handy Flutter extension package that enhances your Flutter development experience with powerful, readable, and reusable extensions for String, DateTime, BuildContext, Color, Iterable, Widget, and more — including emoji replacement and utility methods.

🚀 Make your Flutter code cleaner, shorter, and more expressive!


✨ Features

  • ✅ String extensions – capitalize, title case, convert to number, sentence case, emoji replacements
  • ✅ DateTime and Duration extensions – formatted output, comparison helpers
  • ✅ BuildContext extensions – screen metrics, theme, snackbar, dialog, navigation, clipboard
  • ✅ Widget extensions – tap handling, padding, spacing
  • ✅ Color extension – convert to HEX
  • ✅ Iterable extensions – mapIndexed
  • ✅ Emoji support – :pizza: → 🍕, :india: → 🇮🇳, and more!
  • ✅ Utility – log() for debug printing with optional tags

🚀 Getting Started

  1. Add this to your pubspec.yaml:
dependencies:
  mplix: ^1.0.0

📦 Usage

📝 String Extensions
'flutter dev'.capitalize();                          // Flutter dev
'flutter is cool'.toTitleCase();                     // Flutter Is Cool
'hello world. this is flutter.'.capitalizeSentences(); // Hello world. This is flutter.
'123'.toInt();                                       // 123
'12.34'.toDouble();                                  // 12.34
'Flutter ❤️ :pizza: from :india:'.withEmojis();      // Flutter ❤️ 🍕 from 🇮🇳\
Clean and smart formatting for numbers using intuitive extension methods:

42.toCleanString();          // "42"
42.5.toCleanString();        // "42.50"

1000.toCompact();            // "1K"
1500000.toCompact();         // "1.5M"

1000.toCurrency();           // ₹1,000.00 (default locale: en_IN)
1000.toCurrency(symbol: '\$'); // $1,000.00

1234567.toLocalized();       // "12,34,567" (Indian style by default)

1.toOrdinal();               // "1st"
2.toOrdinal();               // "2nd"
3.toOrdinal();               // "3rd"
11.toOrdinal();              // "11th"

📆 DateTime Extensions

final now = DateTime.now();

now.format();                                        // 22 Jun 2025
now.short;                                           // 22/06/25
now.time;                                            // 08:30 AM
now.fullDateTime;                                    // 22 Jun 2025, 08:30 AM

now.isToday;                                         // true or false
now.isSameDate(DateTime(2025, 6, 22));               // true

⏳ Duration Extension
Duration(seconds: 75).formatted;       // 01:15

🧱 BuildContext Extensions
context.width;                         // Screen width
context.height;                        // Screen height

context.theme;                         // ThemeData
context.textTheme.headlineSmall;       // Text style access
context.colorScheme.primary;           // Color access

context.divider;                       // Divider widget
context.spacing(20);                   // SizedBox(height: 20)

context.showSnackbar("Hello!");        // Show snackbar
context.copyToClipboard("Copied!", successMessage: "Text copied"); // Copy to clipboard

context.showLoader(message: "Loading..."); // Show loader
context.hideLoader();                  // Hide loader
🔁 Navigation Extensions
context.push(MyNewPage());                  // Push a new page
context.pushReplacement(MyOtherPage());     // Replace current page
context.pop();                               // Go back

await context.withLoadingDialog(
someAsyncFunction(),
message: "Processing..."
); // Show loader while future runs

📦 Iterable Extension
['apple', 'banana', 'grape'].mapIndexed((i, val) => '$i: $val');
// Output: ['0: apple', '1: banana', '2: grape']

🎨 Color Extension
Colors.blue.toHex();                        // #FF2196F3
Colors.green.toHex(leadingHashSign: false); // FF4CAF50

🧩 Widget Extensions
Text('Click Me').onTap(() => print('Tapped!'));           // Tap handler

Container().withPaddingAll(8);                                // Padding on all sides
Text('Custom').withPaddingOnly(left: 12, top: 8);             // Specific side padding
Text('Symmetric').withPaddingSymmetric(horizontal: 16); // Horizontal/Vertical
Text('Fade In').fadeIn();                                 // Fade-in animation

Icon(Icons.favorite).tapScale(onTap: () {});              // Tap shrink animation

Text('Soft UI').asNeumorphic();                           // Neumorphic card style

Text('Gradient Card').asGradientCard();                   // Gradient background card

Text('Glass Card').asGlassCard();                         // Frosted glass blur card

Image.asset('pic.png').clipRounded(12);                                       // Clip with corner radius

Image.network(url).clipRounded(12).onImageTapPreview(context, imageProvider: NetworkImage(url)); // Zoomable full preview

'https://picsum.photos/800/300'.asImageCard(
height: 180,
radius: 20,
shadow: true,
onTap: () => print('Image tapped'),
), //resuable image card, (asset,network or file image)


📐 Spacing & EdgeInsets Extensions
16.spacingY();                     // SizedBox(height: 16)
8.spacingX();                      // SizedBox(width: 8)

12.0.toAll;                        // EdgeInsets.all(12)
10.0.toSymmetric;                 // EdgeInsets.symmetric(horizontal: 10, vertical: 10)

😀 Emoji Replacement
'I love :pizza: and :fries:'.withEmojis();        // I love 🍕 and 🍟
'Greetings from :india:'.withEmojis();            // Greetings from 🇮🇳
📋 Clipboard Utility
context.copyToClipboard('Secret Key', successMessage: 'Copied to clipboard!');
🧠 Debug Logging
'Something went wrong'.log();                     // Logs to debug console
'Page Loaded'.log(tag: 'INIT');                   // [INIT] Page Loaded
🧮 Math Extensions

Helper extensions to display math expressions cleanly on UI, similar to how they're shown in math books.

Text('Square Value: ${5.square}'),                    // 5²
Text('Cube Display: ${2.cube}'),                      // 2³
Text('Power UI: ${2.toSuperPower(5)}'),               // 2⁵
Text('Power Formula: ${2.asSuperPowerFormula(5)}'),   // 2⁵ = 32
Text('Root Display: ${16.toRoot(2)}'),                // √16
Text('Root Formula: ${27.asRootFormula(3)}'),         // ³√27 = 3.0000
Text('Fraction: ${0.25.toFractionSymbol()}'),         // ¼
Text('Mixed: ${1.75.toMixedFraction()}'),             // 1¾
Text('Log Base 2: ${8.asLogFormula(2)}'),             // log₂(8) = 3.0000

You can format powers, roots, logs, and common fractions in a visually clean and math-friendly way. Ideal for math-based learning or quiz apps.

Full-Screen Loading Extension

Mplix provides a highly customizable full-screen loader that can display spinners, images, or icons along with primary and secondary messages. Works with Flutter Web, Mobile, and Desktop.

// Example: Full-screen loader with icon/image
ElevatedButton(
  onPressed: () {
    showDialog(
      context: context,
      barrierDismissible: false,
      builder: (context) => Scaffold(
        backgroundColor: Colors.transparent,
        body: Container().asLoadingScreen(
          blur: 8.0,
          backgroundColor: Colors.black.withOpacity(0.6),
          fadeDuration: const Duration(milliseconds: 500),
          customChild: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Image.network(
                'https://img.icons8.com/ios-filled/100/cloud-download.png',
                width: 60,
                height: 60,
                color: Colors.deepPurple,
              ),
              const SizedBox(height: 20),
              SpinKitFadingCube(
                color: Colors.deepPurpleAccent,
                size: 50,
              ),
              const SizedBox(height: 20),
              Text(
                "Fetching data...",
                textAlign: TextAlign.center,
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 18,
                  fontWeight: FontWeight.w600,
                ),
              ),
              const SizedBox(height: 8),
              Text(
                "Please wait a moment",
                textAlign: TextAlign.center,
                style: TextStyle(
                  color: Colors.white.withOpacity(0.8),
                  fontSize: 14,
                  fontWeight: FontWeight.w400,
                ),
              ),
            ],
          ),
        ),
      ),
    );

    Future.delayed(const Duration(seconds: 3), () {
      Navigator.of(context).pop();
      context.showSnackbar("Data loaded successfully!");
    });
  },
  child: const Text('Show Full-Screen Loader with Icon'),
);

Shimmer Loading Effect Extension
// Basic shimmer effect
Container(height: 20, width: 100, color: Colors.grey).asShimmer();

// Custom shimmer
Container(
  height: 20,
  width: 150,
  color: Colors.grey.shade400,
).asShimmer(
  baseColor: Colors.grey.shade400,
  highlightColor: Colors.grey.shade200,
  period: const Duration(seconds: 1),
);

📌 More Coming Soon...

We’re continuously improving Mplix – more utility extensions, emoji packs, and integration widgets are on the way!

contactmfy GitHub avatar
GitHub 作者

contactmfy ↗

Lets amplify IT.

語言Dart

使用的依賴

依賴清單 6 項

如何選擇適合專案的儲存庫?

先依使用情境篩選,再比較專案活躍情況,最後到原始儲存庫確認使用要求。

  1. 透過儲存庫名稱、作者或描述搜尋,再依技術分類縮小範圍。
  2. 綜合星標、分支與最近推送比較專案;星標反映社群關注,不保證品質。
  3. 使用前在 GitHub 確認 README、授權條款與 Issues。

來源與維護

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗