سایت های مورد نیاز برای راه اندازی push notification در فلاتر

ریلیز های google services:
https://developers.google.com/android/guides/releases


ریلیز های gradle plugin و gradle:

https://developer.android.com/studio/releases/gradle-plugin#updating-gradle


سایت اصلی فایربیس برای راه اندازی در فلاتر:

https://firebase.google.com/docs/cloud-messaging/flutter/client

برای معماری اپلیکیشن های واقعی با فلاتر در blocچه سبکی پیشنهاد میشود؟

سه پوشه ی data، bussiness_logic و presentation .

در پوشه ی data، پوشه هایی مانند models, dataproviders و repositories قرار میگیرند.

در پوشه ی bussiness_logic نیز دو پوشه ی cubits و blocs قرار میگیرند.

و در پوشه ی presentation ، پوشه های animations ، pages و screens و widgets قرار میگیرد.

کاربرد پکیج uuid در فلاتر

پکیجی برای تولید اعداد تصادفی

// Generate a v1 (time-based) id
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'

// Generate a v4 (random) id
uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'

// Generate a v5 (namespace-name-sha1-based) id
uuid.v5(Uuid.NAMESPACE_URL, 'www.google.com'); // -> 'c74a196f-f19d-5ea9-bffd-a2742432fc9c'

https://pub.dev/packages/uuid

آشنایی به معماری BLOC در فلاتر-ترجمه ی داکیومنت

سلام به شما امیدوارم حالتون خوب باشه. امروز تصمیم گرفتم داکیومنت آشنایی پکیج bloc رو ترجمه کنم و بذارم خدمت شما. امیدوارم به دردتون بخوره

ادامه خواندن “آشنایی به معماری BLOC در فلاتر-ترجمه ی داکیومنت”

مثال کاربردی فلاتر برای مدیریت استیت با پکیج Provider – بخش سوم

دوستان لینک بخش اول و بخش دوم تقدیم حضورتون.

خب بخش سوم رو شروع میکنیم که تقریبا مهم ترین بخشه و ترجمه ی قسمت نحوه کار با Provider رو میبینیم.

قبل از کار کردن با provider ، فراموش نکنید که حتما آنرا در بخش dependency در pubspec.yaml اضافه کنید.

ادامه خواندن “مثال کاربردی فلاتر برای مدیریت استیت با پکیج Provider – بخش سوم”

مدیریت state در فلاتر- ترجمه ی توضیحات سایت flutter.dev- بخش دوم

دوستان عزیزی که میخوان بخش اول رو مطالعه کنن، میتونن از این لینک بهش دسترسی داشته باشن.

مدیریت استیت در قالب یک اپ ساده

حالا که شما درباره ی declarative UI programming ( — همونجور که تو بخش اول گفته شد ترجمه و مطالعه ی این بخش رو برای کسانی که از منابع Android SDK یا iOS UIKit به فلاتر مهاجرت کردن به عهده ی خودشون گذاشتیم–) و تفاوت بین epemeral state و app state دانستید، برای یادگیری مدیریت استیت در یک اپ ساده آماده اید.

در این صفحه ما به سراغ پکیج provider میرویم.

ادامه خواندن “مدیریت state در فلاتر- ترجمه ی توضیحات سایت flutter.dev- بخش دوم”

مدیریت state در فلاتر- ترجمه ی توضیحات سایت flutter.dev- بخش اول

سلام. راجع به state management خیلی مقالات هست اما چه مقاله و داکیومنتی بهتر از سایت فلاتر که خودش توضیح داده. من صرفا اومدم و ترجمش ترجمه کردم تا جاییکه سوادم یاری میکرد که حداقل کمکی بشه برا درک بهتر این مبحث تقریبا پیچیده. اگر جایی اشتباه ترجمه شده ممنون میشم اطلاع بدید تا اصلاحش کنم. نکته دیگه اینکه من فقط جاهایی که خودم لازمم بود رو ترجمه کردم پس ببخشید که بعضی جاها رفرنس میدم به سایت خود فلاتر.

ادامه خواندن “مدیریت state در فلاتر- ترجمه ی توضیحات سایت flutter.dev- بخش اول”

مهارت هایی که باید در فلاتر یاد بگیرید

سلام. امروز یه پست خوب راجع به مهارتهایی که باید در فلاتر یاد بگیریم دیدم. گفتم لینکشو بذارم شما هم استفاده کنید:
http://adfoc.us/55188881363609

حل مشکل تکرار بی پایان یک اجرا هنگام استفاده از setState در FutureBuilder و ListView.Builder در فلاتر

دوستان سلام. به یکی از چرت ترین مشکلاتی که بهش برخوردم میخوام صحبت کنم.

تو یکی از پروژه ها یه متغیر رو داخل یه FutureBuilder ( داخل ListViewBuilder هم همین مشکل وجود داره) یه مقدار جدید دادم بهش . یه BottomNavigationBar هم داشتم که یه ویجت Text قرار داده بودم وهمون متغیر رو داخلش قرار داده بودم. به شکل زیر:

class BasketBar extends StatefulWidget {
  @override
  _BasketBarState createState() => _BasketBarState();
}

class _BasketBarState extends State<BasketBar> {
  double? finalTotal;
...
@override
  Widget build(BuildContext context) {
    S().init(context);
    return Scaffold(
      appBar: buildAppBar(context),
      body: FutureBuilder<List<Data>>(
          future: getData,
          builder: (context, local) {
            if (local.hasData) {
                  ...
                  myVariable = local.data!.name;
                  ...
      bottomNavigationBar: Text(myVariable.toString()),

اما مقدار داخل bottomNavigationBar برای بار اول بروز نمیشد و null نشون میداد. و باید صفحه رو رفرش میکردم تا مقدار درست رو نشون بده. بنابراین از کد زیر استفاده کردم:

Future.delayed(Duration.zero, () {
                setState(() {
                  myVariable = local.data!.name;

                });
              });

با این کد، متغیر myVariable برای بار اول نشون داده شد اما انگار برنامه میفتاد رو دور تکرار و بی وقفه این setState اجرا میشد. بنابرین یه شرط اضافه کردم به این شکل:

if(myVariable == null)Future.delayed(Duration.zero, () {
                setState(() {
                  myVariable = local.data!.name;
                 });
              });

و مشکل حل شد!

اما قضیه از چه قرار بود؟

وقتی از setState استفاده میکنم ویجت build دوباره ساخته میشه و بنابراین فیچربیلدر هم دوباره ساخته میشه و این شرط :

Future.delayed(Duration.zero, () {
                setState(() {
                  myVariable = local.data!.name;
                 });
              });

دوباره تکرار میشه و مثل یه حلقه ی بی پایان ویجت ساخته میشه .

اما شرطی که اضافه کردیم فقط برای بار اول این کار رو انجام میده و تمام!!!