برنامه نویسی

ساده 1.0.0 – انجمن DEV

https://pub.dev/packages/streamline

الگوی CQRS/میانجی برای فلاتر – راه ساده! 🚀

Streamline یک کتابخانه سبک وزن است که معماری برنامه های کاربردی درجه سازمانی را به Flutter می آورد و درک و پیاده سازی آن را بسیار آسان می کند – حتی اگر در توسعه نرم افزار حرفه ای تازه کار هستید!

این همه درباره چیست؟ 🤔

به Streamline به عنوان یک پیام رسان هوشمند برای برنامه خود فکر کنید. به جای اینکه اجزا مستقیماً با یکدیگر صحبت کنند (که ممکن است به هم ریخته شود)، آنها پیام ها را از طریق یک مرکز مرکزی ارسال می کنند. مثل این است که یک دستیار فوق سازمان یافته داشته باشید که تمام ارتباطات را در برنامه شما مدیریت می کند!

مفاهیم اصلی ساده شده 📚

دستورات و پرس و جوها

  • دستورات: اقداماتی که چیزها را تغییر می دهد (مانند “CreateUser” یا “UpdateProfile”)
  • پرس و جوها: سوالاتی که فقط اطلاعات دریافت می کنند (مانند “GetUserProfile” یا “GetTodoList”)

رویدادها

  • اینها را به عنوان اعلامیه هایی در مورد چیزهایی که اتفاق افتاده در نظر بگیرید
  • مثال: “UserSignedIn”، “ProfileUpdated”، “TodoCreated”
  • برای به‌روزرسانی بخش‌های مختلف برنامه زمانی که اتفاق مهمی می‌افتد عالی است

جمع کننده ها

  • پرس و جوهای ویژه ای که اطلاعات را از چندین منبع جمع آوری می کند
  • برای ویژگی هایی مانند تقویم که در آن باید رویدادها را از قسمت های مختلف برنامه خود جمع آوری کنید، ایده آل است. «GetAllCalendarEvents» ممکن است جلسات، وظایف و یادآوری‌ها را جمع‌آوری کند تا همه آنها را در یک رابط کاربری تقویم نشان دهد.

ابزارک های فلاتر که زندگی را آسان تر می کند 🎯

QueryBuilder

// Simple usage
QueryBuilder<UserProfile>(
  query: GetUserProfileQuery(),
  builder: (context, profile) => Text(profile.name),
)

// With event observers to auto-refresh
QueryBuilder<UserProfile>(
  query: GetUserProfileQuery(),
  builder: (context, profile) => Text(profile.name),
  eventObservers: [
    // Refresh when user updates their profile
    Mediator.events.getStream<UserProfileUpdated>(),
    // Also refresh when user changes their settings
    Mediator.events.getStream<UserSettingsChanged>(),
  ],
  // Optional loading widget
  waiterBuilder: (context) => CircularProgressIndicator(),
  // Optional error handler
  errorBuilder: (context, error, stackTrace) => Text('Oops! $error'),
)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چرا باید از Streamline استفاده کنید؟ ✨

چیزها را مرتب نگه دارید: هر بخش از برنامه شما کار روشنی دارد

تست آسان: دستورات و پرس و جوها مجزا هستند و آزمایش آنها ساده است

انعطاف پذیر: آیا نیاز به افزودن ویژگی های جدید دارید؟ فقط دستورات/پرس و جوهای جدید اضافه کنید!

فلوتر دوستانه: به طور خاص برای توسعه دهندگان Flutter ساخته شده است

مبتدی-دوستانه: بدون نیاز به دکتری معماری نرم افزار!

شروع 🚀

به pubspec.yaml خود اضافه کنید:

dependencies:
  streamline: ^1.0.0
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وارد کنید و شروع به استفاده کنید:

import 'package:streamline/streamline.dart';
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال 📱

پوشه نمونه‌ها را برای یک برنامه لیست ToDo با استفاده از این معماری بررسی کنید!

وابستگی ها 📦

  • dart_mappable Dart Mappable یک کتابخانه بسیار خوب است که برابری ارزش، copyWith، toString زیبا و سریال‌سازی JSON را برای مدل‌ها و پیام‌های شما پیاده‌سازی می‌کند.

⚠️⚠️⚠️ مهم: ⚠️⚠️⚠️: همه دستورات، پرسش‌ها، رویدادها و جمع‌آورنده‌های شما باید از dart_mappable استفاده کنند (ما یک رابط خاص درخواست می‌کنیم (IAction، با toJson و toMap روش ها) برای اینکه شما این را به خاطر بسپارید). این مهم برای جلوگیری از بازسازی های غیر ضروری هم در رویدادها و هم در پرس و جوها است.

  • rxdart RxDart یک کتابخانه برنامه نویسی واکنشی برای Dart و Flutter است. ما از اجرای جریان موضوع رفتار برای پیگیری آخرین رویداد منتشر شده استفاده می کنیم، بنابراین نیازی به ذخیره آخرین وضعیت ندارید.

به کمک نیاز دارید؟ 🆘

ردیاب مشکل

مشارکت 🤝

ما مشارکت ها را دوست داریم! خواه این باشد:

  • گزارش اشکالات
  • بهبود اسناد و مدارک
  • افزودن ویژگی های جدید
  • رفع اشکالات

با خیال راحت یک موضوع را باز کنید یا یک درخواست کشش ارسال کنید!

مجوز

این بسته تحت مجوز GNU AGPL v3 مجوز دارد.

نکات مهم صدور مجوز:

  • 👉 شما می توانید آزادانه از این بسته در برنامه های خود (تجاری یا غیرتجاری) بدون نیاز به مجوز کل برنامه خود تحت AGPL استفاده کنید. 👈
  • مجوز AGPL فقط در صورت تغییر اعمال می شود این کد منبع بسته
  • اگر کد منبع این بسته را تغییر دهید و آن را توزیع کنید (مستقیما یا به عنوان بخشی از یک سرویس شبکه)، باید تغییرات خود را تحت AGPL v3 در دسترس قرار دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا