<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های پژمان حاجی حیدری</title>
        <link>https://virgool.io/feed/@pejmanprogrammer</link>
        <description>یکی از عاشقان فلاتر و برنامه نویسی</description>
        <language>fa</language>
        <pubDate>2026-06-10 12:48:32</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/15464/avatar/F46qt4.png?height=120&amp;width=120</url>
            <title>پژمان حاجی حیدری</title>
            <link>https://virgool.io/@pejmanprogrammer</link>
        </image>

                    <item>
                <title>کار با اثر انگشت در فلاتر</title>
                <link>https://virgool.io/@pejmanprogrammer/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%AB%D8%B1-%D8%A7%D9%86%DA%AF%D8%B4%D8%AA-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-e4cl55fckgvj</link>
                <description> سلام بر دوستان عزیز و همراهان گرامی برای ایجاد و کار با اثر انگشت اول لایبری زیر را اضافه کنید local_auth:^0.6.3+4 برای بررسی دارا بودن اثر انگشت در این دیوایس Future&lt;void&gt; checkBiometrics() async {
    bool canCheckBiometrics;
    try {
      canCheckBiometrics = await auth.canCheckBiometrics;
      if(canCheckBiometrics)
        authenticate();
    }  catch (e) {
      canCheckBiometrics = false;
      print(e);
    }
  }اگر مقدار برگشتی True بود کافی است کد زیر را قرار داده و اثر انگشت را از کاربر بگیریدFuture&lt;void&gt; authenticate() async {
    bool authenticated = false;
    try {
      authenticated = await auth.authenticateWithBiometrics(
          localizedReason: &#039;Scan your fingerprint to authenticate&#039;,
          useErrorDialogs: true,
          stickyAuth: true);
    }  catch (e) {
      print(e);
    }

    if(authenticated)
      //Yess All OK
     else
       showMessage.showSnackBar(title: &amp;quotدوباره سعی کنید&amp;quot);


  }در نهایت حتما MainActivity خود را به شکل زیر تغییر دهید در غیر این صورت به خطا بر می خوریدimport androidx.annotation.NonNull
//import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }
}و دسترسی زیر در Manifest&lt;uses-permission android:name=&amp;quotandroid.permission.USE_FINGERPRINT&amp;quot/&gt;</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Mon, 28 Dec 2020 22:59:23 +0330</pubDate>
            </item>
                    <item>
                <title>AbsorbPoiner&amp;IgnorePoiner Flutter</title>
                <link>https://virgool.io/@pejmanprogrammer/absorbpoinerignorepoiner-flutter-qzxmijaxsbam</link>
                <description>اگر بخواهیم اکشن های کاربر را در فلاتر مدیریت کنیم راهش چیست ؟ AbsorbPoiner و IgnorePoinerتفاوت این دو در چیست ؟شما اگر در Ignore برای باکس قرمز و بنفش کلیکی تعریف کرده باشید در این حالت موقع کلیک روی باکس بنفش متد onTab در باکس قرمز اجرا می شود ولی در Absorb خیر این تفاوت ریز گاهی خیلی میتونه مفید باشهبه طور مثال با مقدار bool میتونید ان را مدیریت کنیدIgnorePointer(
                    ignoring: _ignoring,
                    child: Column(
                      children: &lt;Widget&gt;[
                        RaisedButton(
                          child: Text(&#039;Press the button&#039;),
                          onPressed: () {
                            Scaffold.of(context).showSnackBar(
                                SnackBar(content: Text(&#039;Button is pressed&#039;))
                            );
                          },
                        ),
                        TextField(),
                      ],
                    ),
                  ),کد خوبی داشته باشین</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Thu, 24 Dec 2020 22:38:20 +0330</pubDate>
            </item>
                    <item>
                <title>یاد بگیریم یاد بدهیم</title>
                <link>https://virgool.io/@pejmanprogrammer/%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-%DB%8C%D8%A7%D8%AF-%D8%A8%D8%AF%D9%87%DB%8C%D9%85-ldztggzhf5lc</link>
                <description>قطعا می دونیم او به این باور رسیدیم که اگر به کسی چیزی یاد بدهیم نه تنها طرف مقابل رشد می کنه بلکه خودمون هم رشد می کنیم و برعکس ان اگر کسی را پایین بکشیم خودمان نیز پایین کشیده می شویم بر این باور گروه واتساپ زدم که دوستان این امر را رقم می زنند اگر علاقه مند هستید عضو شوید و در این یادگیری و یاد دادن سهیم باشید هر چند کوچک یا بزرگ به ایدی واتساپ بنده 09226676036 پیام دهید</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Fri, 12 Jun 2020 09:43:31 +0430</pubDate>
            </item>
                    <item>
                <title>اما برنامه آینده آموزش فلاتر چیه ؟</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%A7%D9%85%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A2%DB%8C%D9%86%D8%AF%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%DA%86%DB%8C%D9%87-g6atdbcutjcv</link>
                <description>اول از همه تشکر بابت همراهی هاتون فلاتری های عزیز و پیام های زیبا تون در شبکه های اجتماعی ممنون از تک تک تون و حمایت هاتون که باعث میشه آدم انرژی بیش تری در این مسیر بگیرهقراره آموزش های بعدی آموزش های فوق العاده کاربردی باشه از نحوه ی Responsive ساختن اپلیکیشن تا ساخت برنامه های چت و  آموزش های باحال و کاربردی دیگرولی به دلیل مشغله ی زیاد کاری توی این ماه متاسفانه کمی وقفه در تولید آموزش ها اتفاق می افته اما قطعا با تمام وجودم برمی گردم و این زمان را جبران خواهم کرد لطفا توی شبکه های اجتماعی نظرات خودتون پیشنهاد های ساخت آموزش ها و ... برام بفرستید مشتاقانه منتظر آن ها هستم تلگرام pejmanprogrammerواتساپ 09226676036کد های فلاتری خوبی داشته باشید عشق فقط فلاتر :)</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Mon, 25 May 2020 23:12:37 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش های فارسی ویجت های فلاتر دور هم این جا جمع شده اند</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7%DB%8C-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88%DB%8C%D8%AC%D8%AA-%D9%87%D8%A7%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%AF%D9%88%D8%B1-%D9%87%D9%85-%D8%A7%DB%8C%D9%86-%D8%AC%D8%A7-%D8%AC%D9%85%D8%B9-%D8%B4%D8%AF%D9%87-%D8%A7%D9%86%D8%AF-uhoo9yov6zu8</link>
                <description>ویجت 1 (SnackBar در فلاتر)ویجت 2 (Stack در فلاتر)ویجت 3 (AlertDialog در فلاتر)ویجت 4 (FloatingActionButton در فلاتر)ویجت 5 (SliverAppBar در فلاتر)ویجت 6 (Align در فلاتر)ویجت 7 (PageView در فلاتر)ویجت 8 (Spacerدر فلاتر)ویجت 9 (RichText در فلاتر)ویجت 10 (ListView در فلاتر)ویجت 11 (DraggableScrollableSheet در فلاتر)ویجت 12 (ListTile در فلاتر)ویجت 13 (AnimatedPositioned در فلاتر)ویجت 14 (FadeInImage در فلاتر)ویجت 15 (ToggleButtons در فلاتر)ویجت 16 (IndexedStack در فلاتر)ویجت 17 (Hero در فلاتر)ویجت 18 ( Row/Column در فلاتر)ویجت 19 ( Wrap در فلاتر)ویجت 20 ( Expanded در فلاتر)ویجت 21 (SafeArea در فلاتر)ویجت 22 (Flexible در فلاتر)ویجت 23 (AbsorbPointer در فلاتر)ویجت 24 (LayoutBuilder در فلاتر)ویجت 25 (Container در فلاتر)ویجت 26 (BackdropFilter در فلاتر)ویجت 27 (SizedBox در فلاتر)ویجت 28 (DropDownButton در فلاتر)</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Mon, 25 May 2020 22:51:19 +0430</pubDate>
            </item>
                    <item>
                <title>درآمدی بالای 5 تومن خواهید داشت اگر...</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%AF%D8%B1%D8%A2%D9%85%D8%AF%DB%8C-%D8%A8%D8%A7%D9%84%D8%A7%DB%8C-5-%D8%AA%D9%88%D9%85%D9%86-%D8%AE%D9%88%D8%A7%D9%87%DB%8C%D8%AF-%D8%AF%D8%A7%D8%B4%D8%AA-%D8%A7%DA%AF%D8%B1-drv0bbaanqne</link>
                <description>پول پارتی پورویی ؟ نه در مورد این ها نمی خواهم صحبت کنم نه به خاطر اینکه گارد خاصی بهش دارم نه به خاطر اینکه هیچ کدوم از این ها را نداشتم و تجربه نکردم که بخواهم نظری در موردشون بدهم(هشدار :موارد گفته شده در این متن صرفا تجربه ی بنده از زندگی خودم و جامعه ای از برنامه نویس هاست که به این درآمد رسیده اند و لاغیر )آیا سن توی کسب درآمد بالای 5 تومن عامل اصلیه ؟ قطعا خیر این مورد که در ادامه میگم ربطی به سن و سال اصلا ندارد . هیچ وقت درآمد تان را با سن تان مقایسه نکنید افرادی را دیده ام با سن پایین که درآمد های بالایی دارند و برعکسش نیز هست پس سن عامل اصلی نیستآیا سابقه ی کار در این امر عامل اصلی است ؟ قطعا خیر شاید کمک کننده باشه اما بهتون میگم که این عامل نقش چندانی نداره چون جا یا کسی که شما را سر سابقه بخواهد نه سر تخصص یا عوامل دیگه قطعا جایی برای رشد و کسب درآمد بالا نیست پس نگران کم سابقه بودن نباشید یا اگر سابقه دار هستید زیاد بهش متکی نباشیدآیا تخصص عامل اصلی این کسب درآمد است ؟ قطعا خیر این موضوع که بالاتر رفتن تخصص درآمد نیز افزایش می یابد را پذیرا هستم اما ما می خواهیم راهکاری با سرعت بیش تر به دست آوریم چه بسا متخصص های حرفه ای که درآمدی چندانی ندارند و اکثر شما هم شاهد آن بوده ایدپس عامل اصلی این کسب درآمد چیه که سریع هم به نتیجه برسه ؟سن و سابقه ی کاری و تخصص این ها عوامل اصلی و قطعی نیستند عوامل کمک کننده ماجرا هستندکسب درآمد بالا مرحله ای فراتر از برنامه نویسی و تخصص است که من به دو عامل آن را جدا می کنم1) ذهن سازیذهن سازی هر آنچه که دید تو را به مشکلات و زندگی تغییر میده است که  نتیجه ی مطالعات کتاب های گوناگون فراتر از تخصص  است نگاه به زندگی به صورت کارآفرینی که نوعی تفکر است اصلاح اخلاقیات به شخصه اگر صداقت را چاشنی کارتان کنید با سرعت سر سام آوری رشد خواهید کرد مسیری که دارید می رید پر از ترس و شکست و بالا و پایین است اگر ذهن آماده ای نداشته باشید زودی پا پس می کشید این را یادتون نره زندگی عین یک بازی می مونه کسی که ذهنش را ساخته میدونه چطور مهره های این بازی را حرکت بدهد و همین موجب ایجاد فرصت های بزرگ و درآمد بالاست2)فن بیاندر جامعه ی قرن بیست و یک قطعا بالاترین چیزی که نیاز دارید قدرت مذاکره و تکلم شماست اگر تخصص بالایی داشته باشید اما نتونید به خوبی صحبت کنید قطعا شکست خواهید خورد شبکه سازی و ارتباطات هم جزوی از این موضوع است پس با کلام عالی که می تونه در گفتگو های شما یا در نوشته های شما در شبکه های اجتماعی افراد زیادی را مجذوب خود کنید  و به درآمد های بالا برسیدمسیر ثروت مسیری نیست که با ذهن کارمندی یا فقط گوشه ی اتاق بودن و به تخصص خود پرداختن برسید مسیری است که نیاز دارید با افراد تعامل کنید ذهن سازی قوی داشته باشید تا بتونید آدم ها را مجذوب خود کنید به درآمد های بالا برسید ولی قبلش نگرش تان را بالا ببرید</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Fri, 22 May 2020 20:52:39 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی برنامه نویسی نیست</title>
                <link>https://virgool.io/shayanweb/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%86%DB%8C%D8%B3%D8%AA-rv6b9ueuibbr</link>
                <description>چه قدر باحاله نوشتن کد حس خوبی میده وای تو فیلم ها دیدی طرف تند تند کد می زنه و یک کار بزرگی می کنهقطعا یکی از مشکلاتی که برنامه نویس ها وارد برنامه نویسی می شوند حس لذت کد نویسی براشون است اما متاسفانه باید بگم برنامه نویس خیلی کم درگیر نوشتن کد استواقعا می خوای کد ها را بنویسی؟ قطعا خیر خیلی از کد ها را Copy Paste باید کرد زیر اصلا اهمیت نداره کد را حفظ کرده باشی یا نه در برنامه نویسی مهم اینه که کد را بفهمی بتونی مسئله را حل کنی و بعد از آن کاستوم سازی آن را انجام دهی به هر جور که دوست داری این یعنی برنامه نویسی تجزیه تحلیل سیستم .پس قطعا زمان بیش تری را باید صرف یادگیری و فکر کردن کنی این شیوه ی واقعی برنامه نویسی است و به نظرم باید  این تفکر قدیمی در مورد برنامه نویسی که شبیه تفکر درآمد هنگفت است را به باد هوا بسپاریم .</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Thu, 14 May 2020 21:11:24 +0430</pubDate>
            </item>
                    <item>
                <title>دورهمی استکی فلاتری ها (پارت 2)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%AF%D9%88%D8%B1%D9%87%D9%85%DB%8C-%D8%A7%D8%B3%D8%AA%DA%A9%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1%DB%8C-%D9%87%D8%A7-%D9%BE%D8%A7%D8%B1%D8%AA-2-sgwkzw1y9pgy</link>
                <description>درود بر دوستان جذاب و عزیز در این پارت با یک سری دیگر از سوالات کاربردی در فلاتر و جواب های آن آشنا خواهیم شد پارت 1 همین مطلبچطوری میشه با اسکرول به سمت بالا یک ویجت را پنهان کرد ؟ جوابWidget _buildCircleImage() {
    //starting fab position
    final double defaultTopMargin = SizeConfig.heightMultiplier * 16;
    //pixels from top where scaling should start
    final double scaleStart = 96.0;
    //pixels from top where scaling should end
    final double scaleEnd = scaleStart / 2;

    double top = defaultTopMargin;
    double scale = 1.0;
    if (scrollController.hasClients) {
      double offset = scrollController.offset;
      top -= offset;
      if (offset &lt; defaultTopMargin - scaleStart) {
        //offset small =&gt; don&#039;t scale down
        scale = 1.0;
      } else if (offset &lt; defaultTopMargin - scaleEnd) {
        //offset between scaleStart and scaleEnd =&gt; scale down
        scale = (defaultTopMargin - scaleEnd - offset) / scaleEnd;
      } else {

        scale = 0.0;
      }
    }

    return new Positioned(
      top: top,
      right: SizeConfig.widthMultiplier * 38,
      child: new Transform(
          transform: new Matrix4.identity()..scale(scale),
          alignment: Alignment.center,
          child : Hero(
            tag: &#039;imgprofile&#039;,
            child: Container(
              height: 12 * SizeConfig.heightMultiplier,
              width: 22 * SizeConfig.widthMultiplier,
              decoration: BoxDecoration(
                  border: Border.all(width : 3 , color: Theme.of(context).primaryColor),
                  borderRadius: BorderRadius.circular(26 * SizeConfig.heightMultiplier),
                  image: DecorationImage(
                    image: AssetImage(Images.puser),
                    fit: BoxFit.cover,
                  )
              ),


            ),
          )
      ),
    );
  }

در ویجت بالا ما یک Container داریم که با استفاده از مقادیر مورد نظر Position دلخواه داده ایم سپس وقتی کاربر به سمت بالا اسکرول می کند با استفاده از Scale آن را با  پارامتر عددی مورد نظر به 0 تغییر می دهیم شما به دلخواه خودتان می توانید این پارامتر ها را تغییر دهید و به نتیجه ی دلخواه تان برسیدچطوری می تونیم کیبورد را در فلاتر مدیریت کنم ؟جوابchild: !_keyboardIsVisible() ? Row(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: &lt;Widget&gt;[

                    GestureDetector(
                      onTap: ()
                      {
                        Navigator.of(context).pushReplacement(goPageRoute.pageSignUp());
                      },
                      child: Text(&amp;quotثبت نام&amp;quot , style: TextStyle(fontWeight: FontWeight.bold ,
                          fontSize: SizeConfig.textMultiplier * 2.8 , color: ColorsApp.white , decoration: TextDecoration.underline,)),
                    ),
                    Text(&amp;quotحساب کاربری ندارید؟  &amp;quot , style: TextStyle(fontSize: SizeConfig.textMultiplier * 2
                        , color: ColorsApp.Palewhite )),


                  ],
                ):Container(),


 bool _keyboardIsVisible() {
    return !(MediaQuery.of(context).viewInsets.bottom == 0.0);
  }یکی از این راه ها مورد بالا است که با استفاده از متغیر keyboardIsVisible و مقدار False یا True بودن آن میتوانید این کار را مدیریت کنیدچطور می تونم در فلاتر تماس برقرار کنم ؟ یا به یک Url خاصی انتقال پیدا کنم ؟جوابimport &#039;package:flutter/material.dart&#039;;
import &#039;package:url_launcher/url_launcher.dart&#039;;

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: &#039;Flutter Demo&#039;,
      home: new Home(),
    );
  }
}

class Home extends StatelessWidget {
  Home({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) =&gt; new Scaffold(
        appBar: new AppBar(
          title: new Text(&amp;quotView&amp;quot),
        ),
        body: new Center(
          child: new FlatButton(
              onPressed: () =&gt; launch(&amp;quottel://21213123123&amp;quot),
              child: new Text(&amp;quotCall me&amp;quot)),
        ),
      );
}

void main() {
  runApp(
    new MyApp(),
  );
}با استفاده از کد بالا و استفاده از پکیج https://pub.dev/packages/url_launcher#-installing-tab-میتونید این کار را انجام دهیدچطوری می تونم اپ بار مورد نظر را به سایز دلخواه خودم تغییر دهم ؟جوابhome: Scaffold(
        appBar: PreferredSize(
          preferredSize: Size.fromHeight(50.0), // here the desired height
          child: AppBar(
            // ...
          )
        ),با استفاده از PreferredSize هر سایز دلخواهی را می توانید به اپ بار خود اختصاص دهیدچطوری می تونم خطای وارد توسط کاربر در تکس فیلد را نمایش دهم ؟جوابclass MyHomePage extends StatefulWidget {
  @override
  MyHomePageState createState() {
    return new MyHomePageState();
  }
}

class MyHomePageState extends State&lt;MyHomePage&gt; {
  final _text = TextEditingController();
  bool _validate = false;

  @override
  void dispose() {
    _text.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(&#039;TextField Demo&#039;),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: &lt;Widget&gt;[
            Text(&#039;Error Showed if Field is Empty on Submit button Pressed&#039;),
            TextField(
              controller: _text,
              decoration: InputDecoration(
                labelText: &#039;Enter the Value&#039;,
                errorText: _validate ? &#039;Value Can\&#039;t Be Empty&#039; : null,
              ),
            ),
            RaisedButton(
              onPressed: () {
                setState(() {
                  _text.text.isEmpty ? _validate = true : _validate = false;
                });
              },
              child: Text(&#039;Submit&#039;),
              textColor: Colors.white,
              color: Colors.blueAccent,
            )
          ],
        ),
      ),
    );
  }
}با استفاده از متغیرvalidate مقدار مورد نظر را بررسی و سپس خطای وارده را نمایش دهیدامیدوارم براتون مفید بوده باشه </description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Sun, 10 May 2020 17:31:02 +0430</pubDate>
            </item>
                    <item>
                <title>دورهمی استکی فلاتری ها</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%AF%D9%88%D8%B1%D9%87%D9%85%DB%8C-%D8%A7%D8%B3%D8%AA%DA%A9%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1%DB%8C-%D9%87%D8%A7-eorvloilg0ue</link>
                <description>درود بر دوستان عزیز و فلاتری های نازنین یک چند تا سوالات مفیده استک است که می خواهیم باهم جواب هاش را بررسی کنیم من یک اپی دارم که می خوام لوگوی اپ را اول کار بزارم و بعد از چند ثانیه  صفحه ی اصلی برنامه نمایش داده بشه چکار کنم ؟ جوابimport &#039;dart:async&#039;;

import &#039;package:flutter/material.dart&#039;;

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home:  SplashScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(color: Colors.white,);
  }
}


class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() =&gt; _SplashScreenState();
}

class _SplashScreenState extends State&lt;SplashScreen&gt; {
  @override
  void initState() {
    super.initState();
    Timer(
        Duration(seconds: 3),
            () =&gt; Navigator.of(context).pushReplacement(MaterialPageRoute(
            builder: (BuildContext context) =&gt; HomeScreen())));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.blue,
      body: Center(
          child: Text(
            &#039;Hello world&#039;,
          )
      ),
    );
  }

}خوب با استفاده از Timer مدت زمان مشخصی بهش دادیم که در این مثال 3 ثانیه است و با استفاده از متد pushReplacement کاری کردیم که وقتی صفحه ی جدید باز میشه این صفحه بسته بشه و نشه به قسمت قبل برگشتبه همین سادگی به همین خوشمزگی :)من کد رنگی را دارم اما نمی دونم چطوری به ویجتم بدهم ؟جوابconst color = const Color(0xffb74093); خوب کافی است این گونه و با ثابت 0xff کد رنگی را به ویجت مورد نظر بدهیمولی خوب می تونید کلاس ثابتی  تعریف کنید که فقط با دادن کد رنگی رنگ مورد نظر را بهتون برگردونهfinal Color color = HexColor.fromHex(&#039;#aabbcc&#039;);

extension HexColor on Color {
  static Color fromHex(String hexString) {
    final buffer = StringBuffer();
    if (hexString.length == 6 || hexString.length == 7) buffer.write(&#039;ff&#039;);
    buffer.write(hexString.replaceFirst(&#039;#&#039;, &#039;&#039;));
    return Color(int.parse(buffer.toString(), radix: 16));
  }من یک تکس دارم و می خوام یک کلمه آن زیر خط باشه یکی اش نه یا زیر خط موج دار داشته باشه یا... چکار کنم ؟جواباول طریقه ی ساده زیر خط دادن به شرح زیر استText(
  &#039;Hello world&#039;,
  style: TextStyle(
    decoration: TextDecoration.underline,
  ),
)اما می تونید یک کلمه زیر خط داشته باشه و دیگری خیرText.rich(
  TextSpan(
    text: &#039;Hello &#039;,
    style: TextStyle(fontSize: 50),
    children: &lt;TextSpan&gt;[
      TextSpan(
          text: &#039;world&#039;,
          style: TextStyle(
            decoration: TextDecoration.underline,
          )),
      // can add more TextSpans here...
    ],
  ),
)می تونید زیر خط به حالت دش داشته باشید کافی خط زیر را به کد بالا اضاف کنیدdecorationStyle: TextDecorationStyle.dashedTextDecorationStyle.dottedTextDecorationStyle.wavyTextDecorationStyle.doubleمن برنامه نویس نیتیو هستم حالا آمدم سمت فلاتر می تونید بهم بگید matchparent و wrapcontent چطوری هست در فلاتر ؟جواب Container(
        height: double.infinity,
    width: double.infinity,child:*your_child*)

Row(
  mainAxisSize: MainAxisSize.max,
  children: &lt;Widget&gt;[*your_child*],
);

Row(
  mainAxisSize: MainAxisSize.min,
  children: &lt;Widget&gt;[*your_child*],
);من دلم می خواد در اپ استاتوس بار و این ها نمایش داده نشود در کل فول اسکرین باشه چکار کنم ؟جوابکد زیر را کافی است اضاف کنید و تمومSystemChrome.setEnabledSystemUIOverlays([])اگر مفید بوده قلب یاد تون نره و  آن را با دوستان تون به اشتراک بگذارید شاید سوال آن ها هم باشه از کجا معلوم :)</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Sat, 02 May 2020 22:13:33 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش AdobeXd در 20 دقیقه</title>
                <link>https://virgool.io/@pejmanprogrammer/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-adobexd-%D8%AF%D8%B1-20-%D8%AF%D9%82%DB%8C%D9%82%D9%87-vmfeqs2p5iyu</link>
                <description>امروزه تاثیر طراحی های زیبا و جذاب بر کاربر قابل چشم پوشی نیست  نرم افزار AdobeXd نرم افزار عالی در زمینه طراحی اپ و وب سایت است که از طرف شرکت مجبوب ادوب ساخته شده این نرم افزار در کنار کاربردی و زیبا بودن به شدت کار با آن ساده است .با استفاده از این نرم افزار کلی طرح های زیبا میشه زد و براحتی انیمیشن های جذاب به کار برد .سعی کردم در باب آموزش این نرم افزار طراحی یک مینی اپ را بزنم که بتونید به راحتی از این نرم افزار استفاده کنید و ان را فرا بگیرید. https://www.aparat.com/v/J2QHa </description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Mon, 20 Apr 2020 21:48:09 +0430</pubDate>
            </item>
                    <item>
                <title>ویجت 28 (DropDownButton در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-28-dropdownbutton-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-wrqcrbbpn8go</link>
                <description>در اموزش قراره کار با ویجت dropdownbutton را یاد بگیریم این ویجت برای انتخاب یک مورد از لیست چندین مورد استفاده میشه مثل انتخاب یک شهر از میان شهر های یک کشور و…دوستان با من همراه باشید تا کامل تمام موارد بالا را همراه با مثال توضیح دهم پس بریم بی وقفه سراغ ادامه آموزش و کلی آموزش های باحال فلاترhttps://flutter-learn.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%88%db%8c%d8%ac%d8%aa-dropdownbutton/اگر مطلب را کامل خواندی و برات مفید بوده قلب یادت نره</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Wed, 18 Mar 2020 21:20:19 +0330</pubDate>
            </item>
                    <item>
                <title>نامه ی اعمال سال 98 یک سال دیگر از توشه ی سفرمان گذشت</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%86%D8%A7%D9%85%D9%87-%DB%8C-%D8%A7%D8%B9%D9%85%D8%A7%D9%84-%D8%B3%D8%A7%D9%84-98-%DB%8C%DA%A9-%D8%B3%D8%A7%D9%84-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%A7%D8%B2-%D8%AA%D9%88%D8%B4%D9%87-%DB%8C-%D8%B3%D9%81%D8%B1%D9%85%D8%A7%D9%86-%DA%AF%D8%B0%D8%B4%D8%AA-mzx3oeyxpekm</link>
                <description>سلام دوستان گل و گلاب یک سال مان هم گذشت امیدوارم در این سال توانسته باشم استفاده کامل را ببرمو سعی هم کردم از تمام زمان هایم استفاده کنم و امیدوارم اگر کم و کاستی باشد خداوند بزرگ به بزرگیخودش مرا ببخشد و به خوبی بندگی اش را به جا اورده باشمقران کریمآيا مي‌پنداريد كه شما را بيهوده آفريده‌ايم و به سوي ما باز نمي‌گرديد؟لوح تقدیر سال 97و اما سال 98به نام خداوند علیم و حکیمتقدیرنامه سال 98سال زبان انگلیسیجناب آقای پژمان حاجی حیدری با پاس تلاش های فراوان شما در طول سال 98  که  درعنوان این سال پیشرفت خوبی داشتید و شما موفق به دریافت این لوح تقدیر و همچنین برداشت قدم هایی برای نزدیک شدن به فرد موفق و مفید در جامعه را به شما و خانواده عزیزتان تبریک می گوییماین موارد به شرح زیر استدر زمینه تخصصی : یادگیری زبان کاتلین و دارت یادگیری فریم ورک فلاتر و معماری بلاک یادگیری کامل گیتدر زمینه کتابخوانی و مطالب نویسی :نوشتن بیش از 50 مطلب جامع تخصصی وعمومی  در دنیای اینترنتپدرپولدارپدربی پول - اثرمرکب - تمرکز - سطل شما چقدر پر است – تجارت قرن 21 – پول – ثروتمند ترین مرد بابل - چهارمیثاق – مدیریت و رهبری به سبک استیوجابز- اموزش فن بیان – شازده کوچولو- هشت کتاب – کتاب اشعار رهی معیریدر زمینه اصلاح اخلاقیات به شرح زیر است:خوش اخلاق بودن که ثبات آن در کل سال حفط شدرکورد سرنرفتن حوصله که رکورد آن به 3 سال تمدید شدرکورد شادی دائمی و مدیریت عالی ناراحتی که رکورد ان به 3 سال تمدید شدتلاش برای افزایش تمرکز و قرار دادن هر چیز جای خودشرکورد عدم تکرار روز ها که رکورد آن به 3 سال تمدید شدو موارد دیگر که امیدواریم به اهداف و آرزوهای خود در زندگی خود در آینده نزدیک دست یابدشما هم تجربه امسال خودتان را خوشحال میشم در میان بگذارید</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Wed, 18 Mar 2020 11:19:05 +0330</pubDate>
            </item>
                    <item>
                <title>کار با SQLite و دیتابیس آفلاین در فلاتر</title>
                <link>https://virgool.io/@pejmanprogrammer/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-sqlite-%D9%88-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A2%D9%81%D9%84%D8%A7%DB%8C%D9%86-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-xpk7h2pko9vl</link>
                <description>درود بر دوستان و عزیزان دل و جذاب در این آموزش قراره با دیتابیس محلی SQLite کار کنیم و وارد کردن ,آپدیت کردن و پاک کردن داده از دیتابیس محلی را یاد بگیریم چون خیلی مواقع به آن نیاز داریم که اطلاعات را در حالت افلاین ذخیره کنیم به طور مثال اپلیکیشن های کتاب یا اپ های انلاین که گاهی نیاز داریم یک سری اطلاعاتش در دیتابیس محلی ذخیره کنیم پس بی وقفه سراغ یادگیری ان می رویم.مراحل آموزش به شرح زیر استاضافه کردن وابستگی هاتعریف مدل Dogباز کردن دیتابیسساخت جدول dogsوارد کردن اطلاعات در دیتابیسبازیابی لیستی از اطلاعاتآپدیت اطلاعات از دیتابیسپاک کردن از دیتابیسدوستان با من همراه باشید تا کامل تمام موارد بالا را همراه با مثال توضیح دهم پس بریم بی وقفه سراغ ادامه آموزشhttps://flutter-learn.ir/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-sqlite-%d9%88-%d8%af%db%8c%d8%aa%d8%a7%d8%a8%db%8c%d8%b3-%d8%a2%d9%81%d9%84%d8%a7%db%8c%d9%86-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Tue, 10 Mar 2020 21:59:19 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 27 (SizedBox در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-27-sizedbox-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-igscfj9erx7d</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاب فلاتر یعنی SizedBoxاین ویجت اندازه های مشخصی را می گیره و در خیلی جاها قابل استفاده است بریم سراغ کد نویسی ان از ابتدایی ترین مورد استفاده ان شروع میکنیمimport &#039;package:flutter/material.dart&#039;;

class BasicSizedBox extends StatelessWidget {
  //A box with a specified size
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(&amp;quotSizedBox Widget&amp;quot)),
      //the sizedBox widget forces its child to have a specific width and/or height (if that widget permits that)
      //if it doesnt contain a child, it will size itself to the given width and height
      //can also use SizedBox.expand(), which stes with and height to infinity
      //or SizedBox.fromSize() which requires a Size class

      body: Center(
        child: SizedBox(
          height: 80.0,
          width: 80.0,
          //the container has no width or height, but the sizedbox widget forces it to its own width/height
          child: Container(
            color: Colors.red,
          ),
        ),
      ),
    );
  }
}به این ویجت طول و عرض با اندازه ی 80 میدهیم به خروجی زیر دقت کنیدمی تونیم کل صفحه باقی مانده را بدون سایز زنی نیز پوشش دهیم SizedBox.expand(
  child: Card(
    child: Text(&#039;Hello World!&#039;),
    color: Colors.yellowAccent,
  ),
),می تونیم بین ویجت ها با دادن اندازه ی مشخص به این ویجت فاصله ایجاد کنیمColumn(
  children: &lt;Widget&gt;[
    Icon(Icons.star, size: 50),
    const SizedBox(height: 100),
    Icon(Icons.star, size: 50),
    Icon(Icons.star, size: 50),
  ],
),حتی می تونیم در یک حالت یک ویجت دلخواه را نشان دهیم در وضعیت دیگر ان را پنهان کنیم و فضای اشغال شده ان را با این ویجت جایگزین کنیم به کد زیر دقت کنیدWidget build(BuildContext context) {
  bool isVisible = ...
  return Scaffold(
    appBar: AppBar(
      title: Text(&#039;isVisible = $isVisible&#039;),
    ),
    body: isVisible 
      ? Icon(Icons.star, size: 150) 
      : const SizedBox(),
  );
}در وضعیتی که مقدار True باشه ویجت نشان داده میشه و در وضعیتی که Flase است به جای ان از SizedBox از فضای موجود استفاده می کنیمامیدوارم از این اموزش نهایت لذت را برده باشیدمن از این ویجت به خاطر حمایتی که از ویجت های دیگر می کند یاد گرفتم اگر برای دوست یا عزیزانم مشکلی ایجاد شده کمک شان کنم و فقط به فکر خودم نباشم به قول ارد بزرگ که میگهبخشش میزان فر و شکوه آدمی را نشان می دهد .نوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاترایدی کانال برای دسترسی به تمام اموزش ها @Learnpgلینک کانال https://t.me/joinchat/AAAAAFDR-mppe-ciC6X1Qgایدی تلگرام بنده @pejmanprogrammer</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Thu, 27 Feb 2020 11:11:55 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 26 (BackdropFilter در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-26-backdropfilter-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-aiecsfeske3f</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاب فلاتر یعنی BackdropFilterداشتم شیشه های پنجره را تمیز می کردم ناگهان فلاتر خانم وارد خانه شد و نگاهی عمیق به شیشه کرد گفتم چیه تا حالا ندیدی یک مرد شیشه بشوره البته حق هم داری ما همش نزدیک عید هیچ وقت خانه نیستیم :) گفت نه بابا نگاه به شیشه کن یک چیزی بین تار و روشن است و دیدن منظره پشت این شیشه چقدر عجیب و زیباست منظره ای تار و روشن! همون جا بود که ایده ی ساخت این ویجت یعنی BackdropFilter به ذهنش رسید گفت دنبال چیزی هستم که بشه تصاویر را به راحتی ویرایش کرد و حتی ان را BLUR کرد و زیبایش کرد منم پنجره را باز کردم خواستم بپرم پایین از دست این فلاتر اما منصرف شدم و گفتم بیام براتون یک مطلب در موردش بنویسم بعد تصمیم می گیرم :)خوب بریم سراغ کد انimport &#039;dart:ui&#039;;

import &#039;package:flutter/material.dart&#039;;

void main()
{
  runApp(MaterialApp(
    title: &#039;Androidmonks&#039;,
    home: Scaffold(
      appBar: AppBar(title: Text(&amp;quotBackdrop Filter&amp;quot),),
      body: Stack(
        children: &lt;Widget&gt;[
          ConstrainedBox(
            child: Image.network(&amp;quothttps://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=750&amp;w=1260&amp;quot),
            constraints: BoxConstraints.expand(),
          ),
          Container(
            child: BackdropFilter(
              filter: ImageFilter.blur(sigmaX: 5, sigmaY: 6),
              child: Container(
                decoration: BoxDecoration(
                  color: Colors.grey.shade100.withOpacity(0.2),
                )
              ),
            ),
          ),
        ],
      ),

    ),
  ));
}در کد بالا هدف BLUR کردن تصویر است پس در فیلتر این ویجت این کار را انجام می دهیم بعد از ان یک بچه تعریف کردیم و ویجت Container را بهش دادیم و رنگ مورد نظر خود را یعنی Grey را برایش انتخاب کردیم منتها Opacity که میزان تار بودن ان را کنترل میکنه یعنی از 0 تا 1 ان را 0.2 اختصاص دادیم که پس زمینه پشت بتواند جلوه کند خروجی ان به شکل زیر در امدپیشنهاد میکنم با مقادیر ان کمی بازی کنید تا بهتر متوجه شوید ولی اگر بخواهید قسمتی را Blur کنید میتونید از Stack و سپس مقدار دهی Position به ان استفاده کنید که در اموزش های قبلی Stack را کامل بازگو کردم نمونه  خروجی  دیگر این ویجتحالا جاهایی تصویری نشان داده می شود و سوالی می پرسید میتونید ان عکس را Blur و تار کرده بعد پاسخ گویی ان را به حالت قبل در اورید امیدوارم از این اموزش نهایت لذت را برده باشیدمن از این ویجت یاد گرفتم مشکلاتی که درون وجودم را تار کرده اند و فکر میکنم اصلا زیبا نیستند میتوان به دید دیگری نگاه کرد و زیباهای بسیاری از ان بیرون کشید که همان ها بودند که تو الان اینجایی به قول افلاطون که میگهامور مهمه هرگز به دور از خطر نیست و چنان که می‌گویند، دشواری، شرط هر چیز زیباستنوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاترایدی کانال برای دسترسی به تمام اموزش ها @Learnpgلینک کانال https://t.me/joinchat/AAAAAFDR-mppe-ciC6X1Qgایدی تلگرام بنده @pejmanprogrammer</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Tue, 25 Feb 2020 22:15:31 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 25 (Container در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-25-container-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-vfyj4ldtiu7v</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاب فلاتر یعنی Containerیک ویجت والد است که بچه خودش را مدیریت میکنه و به راحتی میشه عرض و ارتفاع و رنگ پس زمینه و... ان را تنظیم کرد در کل ویجت خیلی به درد به خوری است قبل از شروع به کار با این ویجت بیاییم و کد های ساختار اصلی صفحه مان را بزنیمclass ContainerPage extends StatefulWidget {
@override
State&lt;StatefulWidget&gt; createState() =&gt; _ContainerState();
}
class _ContainerState extends State&lt;ContainerPage&gt; {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(PageName.CONTAINER),
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: &lt;Widget&gt;[
Text(&amp;quotHello world&amp;quot)
],
)),
);
}
}اما بیایید برویم سر اصل موضوع یعنی کار با این ویجت کد بالا را به شکل زیر تغییر کوچکی دهیدContainer(
color: RED,
child: Text(&amp;quotHello world&amp;quot),
)
و خروجی ان که در زیر قابل مشاهده استاما بیایید مقداری با ویژگی های جذاب این ویجت کار کنیمthis.childکه خوب ظاهرا این ویژگی خیلی مشخصه میتونیم بچه ای را به این ویجت بدهیمColor colorکه برای تنظیم زنگ پس زمینه ان به کار می اید Container(
color: GREEN,
child: Text(&amp;quotColor color&amp;quot),
),this.paddingبه وسیله این ویژگی میتوان کودک را نسبت به والد ان فاصله داخلی بدهیمContainer(
color: YELLOW,
padding:
EdgeInsets.only(left: 10.0, right: 50.0, top: 10, bottom: 30),
child: Container(
color: BLUE_DEEP,
child: Text(&amp;quotthis.padding&amp;quot),
),
)width &amp; heightبه وسیله ی ان طول و عرض ویجت مورد نظر را مشخص میکنیمContainer(
width: 200.0,
height: 100.0,
color: GREEN,
child: Text(&amp;quotwidth = 200 , height = 100&amp;quot),
),this.alignmentمی تونیم بچه مورد نظر را در جایی ک مدنظر ماست در ویجت مورد نظر قرار دهیم که دارای موارد زیر است و به وسیله ی ان بدون هیچ نگرانی بچه ی مورد نظر را در ویجت قرار می دهیمtopLeft topCenter topRightcenterLeft center centerRightbottomLeft bottomCenter bottomRightبه مثال زیر و خروجی ان دقت کنیدContainer(
color: BLUE_LIGHT,
alignment: Alignment.bottomRight,
height: 200,
child: Text(&amp;quotthis.alignment&amp;quot),
),constrainsکه به سه صورت tight و loose و expand است در مثال زیر از expand استفاده کرده ایمContainer(
color: BLUE_LIGHT,
constraints: BoxConstraints.expand(height: 50.0),
child: Text(&amp;quotBoxConstraints constraints&amp;quot),
),به وسیله ای این مقدار اگر ویجت ما اندازه مشخصی نداشته باشد یعنی طول و عرض ان مقداری اختصاص داده نشده تا بی نهایت گسترش پیدا میکنهاین ویجت ویژگی های زیاد دیگری دارد که در اینده مفصل در مورد ان صحبت خواهیم کرد به طور مثال می شود به ان border اختصاص داد به طور مثالContainer(
constraints: BoxConstraints.expand(height: 100.0),
padding: EdgeInsets.all(10),
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
color: RED),
child: Text(&amp;quotdecoration: ShapeDecoration&amp;quot),
)در کد بالا با استفاده از borderRadius به هر 4 در هر طرف این ویجت Border قرار دادیم که مقدار ان در مثال زیر 10 اختصاص داده شده است که طبق سلیقه خودتان به هر عدد دلخواه می توانید تغییر دهید از انجایی که خوب در مثال های بالا همه ی اشکال به شکل مستطیل بود به وسیله ی کد زیر می توانیم ان را به شکل گرد در اوریم خوب که در اپ های زیادی به کارمان خواهد امدContainer(
constraints: BoxConstraints.expand(height: 200.0),
alignment: Alignment.center,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
gradient: LinearGradient(colors: [BLUE_LIGHT, YELLOW]),
shape: BoxShape.circle),
child: Text(&amp;quotdecoration: BoxDecoration&amp;quot),
),این ویجت یکی از ویجت های پر استفاده در فلاتر است و خیلی جاها به کار تون می اید امیدوارم از این اموزش نهایت لذت را برده باشیدمن از این ویجت با این همه ویژگی که برای بهتر و موثر نشان دادن ویجت کودکش داشت یاد گرفتم فقط به خودم فکر نکنم و برای دوستان و هر ان که در قلبم هستند ارزش قائل شوم و به ان ها ببخشم تا خروار خروار به سمت خودم بازگرددنوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاترایدی کانال برای دسترسی به تمام اموزش ها     @Learnpgلینک کانال   https://t.me/joinchat/AAAAAFDR-mppe-ciC6X1Qgایدی تلگرام بنده  @pejmanprogrammer</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Tue, 18 Feb 2020 20:49:07 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 24 (LayoutBuilder در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-24-layoutbuilder-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-lvx5iw6ukxxn</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاااااب فلاتر یعنی LayoutBuilderبه نظرتون ما اپ توسعه می دهیم که روی گوشی مثلا در فلان سایز همه چی درست نمایش داده شود و در سایز های دیگه مثل تبلت خراب باشه ؟ خوب قطعا نه هر کی این گونه اپ زده به درد عمه اش میخوره حالا عمه زبون بسته این وسط چه گناهی کرده نمی دونم :)نمونه کد استفاده شده از این ویجت میتونه به شرح زیر باشهimport &#039;package:flutter/material.dart&#039;;

class BasicLayoutBuilder extends StatelessWidget {
  //Builds a widget tree that can depend on the parent widget&#039;s size.
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(&amp;quotLayoutBuilder Widget&amp;quot)),
      body: LayoutBuilder(
        builder: (context, constraints) {
          if (constraints.maxWidth &gt; 600) {
            return _buildTwoContainers();
          } else {
            return _buildOneContainer();
          }
        },
      ),
    );
  }

  Widget _buildOneContainer() {
    return Center(
      child: Container(
        height: 300.0,
        width: 300.0,
        color: Colors.red,
      ),
    );
  }

  Widget _buildTwoContainers() {
    return Center(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: &lt;Widget&gt;[
          Container(
            height: 300.0,
            width: 300.0,
            color: Colors.red,
          ),
          Container(
            height: 300.0,
            width: 300.0,
            color: Colors.blue,
          ),
        ],
      ),
    );
  }
}در کد بالا به وسیله ی این ویجت سایز صفحه ی مورد نظر را گرفتیم و بررسی کردیم اگر سایز ان از مقدار تعیین شده کمتر بود ویجت مورد نظر ما در غیر این صورت ویجت دیگر نمایش داده شود که خروجی های ان به شکل زیر استبه همین سادگی به همین خوشمزگی.من از این ویجت یاد گرفتم باید به نظرات و ورودی های مختلف توسط افراد اهمیت قائل شوم نه اینکه فقط به یک شخص یعنی فقط حرف خودم اهمیت بدهم چون ممکن است جمله ای یا پیشنهادی از ان ها زندگی ام را دگرگون سازد از کجا معلوم ؟ پس سعی میکنم همیشه شنونده خوبی باشممثل همیشه می گویم و باز خواهم گفت اگر مطلب براتون مفید بوده لینک را با دوستاتون در لینکدین تلگرام و و و انتشار دهید تا به طرفداران فلاتر روز به روز افزوده شودروز های زیبا و جذاااااااااااااااااابی داشته باشید قلب یادتون نره :)نوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاترایدی کانال برای دسترسی به تمام اموزش ها @Learnpgلینک کانال https://t.me/joinchat/AAAAAFDR-mppe-ciC6X1Qgایدی تلگرام بنده @pejmanprogrammer</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Sat, 15 Feb 2020 22:17:16 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 23 (AbsorbPointer در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-23-absorbpointer-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-sdqnjh8anvlp</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاااااب فلاتر یعنی AbsorbPointer بعضی مواقع هست که نیاز داری کلیک های یک مجموعه ویجت یا حتی یک تک ویجت را از دسترس خارج کنی یعنی کاربر هر چه کلیک می کنه هیچ اثری نداشته باشد بزار ببینم برای این کار فلاتر راه حلی داره ؟صد البته فلاتر برای این کار ها هم راه حل خودش را داره بیخود نیست دوست دختره گوگل شده :)خوب بریم سراغ کدimport &#039;package:flutter/material.dart&#039;;
 
class Tip2 extends StatefulWidget {
  Tip2() : super();
 
  final String title = &amp;quotTip Demo&quot;
 
  @override
  Tip2State createState() =&gt; Tip2State();
}
 
class Tip2State extends State&lt;Tip2&gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: AbsorbPointer(
          absorbing: false,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: &lt;Widget&gt;[
              RaisedButton(
                child: Text(&amp;quotClick Me&amp;quot),
                onPressed: () {},
              ),
              RaisedButton(
                child: Text(&amp;quotClick Me&amp;quot),
                onPressed: () {},
              ),
              RaisedButton(
                child: Text(&amp;quotClick Me&amp;quot),
                onPressed: () {},
              )
            ],
          ),
        ));
  }
}در کد بالا با استفاده از absorbing که اگر این مقدار برابر true باشه دیگر زیر مجموعه های این ویجت را هر چه کاربر کلیک میکنه به جایی نمی رسه این ویجت در جاهایی از اپ میتونی راه حل خوبی باشهبه همین سادگی به همین خوشمزگی.من از این ویجت یاد گرفتم این قدر در زندگی کامل باشم که نبودم بزرگترین تنبیه و از کار افتادگی برای دیگران باشه این یعنی تو تاثیر گذاری مستقیمی روی تمامی اجزا داری این یعنی داری پیشرفت عالی میکنی که غیر قابل تعویض هستی مثل همیشه می گویم و باز خواهم گفت اگر مطلب براتون مفید بوده لینک را با دوستاتون در لینکدین تلگرام و و و انتشار دهید تا به طرفداران فلاتر روز به روز افزوده شودروز های زیبا و جذاااااااااااااااااابی داشته باشید قلب یادتون نره :)نوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاتر</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Tue, 11 Feb 2020 13:16:14 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 22 (Flexible در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-22-flexible-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-qmphcgskgvrc</link>
                <description>خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاااااب فلاتر یعنی Flexibleبا استفاده از این ویجت می توان انعطاف پذیری به کودک برای پر کردن فضای موجود داد به خروجی زیر دقت کنیددر ویجت Row که ویجت های ان را با استفاده از این ویجت و نسبت flex به نسبت بزرگی در کنار هم چیده میشه مثلا flex برابر 3 سایز 3 برابر نسبت به flex با مقدار 1 دارد ک حتی اگر صفحه چه به صورت عمودی چه افقی باشد این نسبت بدون به هم ریختگی حفظ می شوداین ویجت دارای دو تناسب FlexFit.tight و FlexFit.loose است که در حالت اول کودک فضای موجود را پر می کند و در حالت دوم کودک حداکثر می تونه به فضای موجود باشه اما کوچکتر می باشد مثالی از این ویجتclass Testing2 extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return Container(
        color: Colors.red,
        child: Row(
          children: &lt;Widget&gt;[
            Flexible(
              child: Column(
                children: &lt;Widget&gt;[
                  Flexible(
                    flex: 1,
                    child: Container(
                      color: Colors.deepOrange,
                    ),
                  ),
                  Flexible(
                    flex: 2,
                    child: Container(
                      color: Colors.lightBlue,
                    ),
                  ),
                ],
              ),
            ),
            Flexible(
              child: Column(
                children: &lt;Widget&gt;[
                  Flexible(
                      flex: 3,
                      child: Container(
                        color: Colors.orange,
                      )),
                  Flexible(
                    flex: 1,
                    child: Row(
                      children: &lt;Widget&gt;[
                        Flexible(
                            flex: 2,
                            child: Container(
                              color: Colors.blue,
                            )),
                        Flexible(child: Container(color: Colors.green))
                      ],
                    ),
                  )
                ],
              ),
            )
          ],
        ),
      );
    }از دو ردیف استفاده می کنیم اولی با نسبت 1 به 2 و دومی با نسبت 3 به 1 و در گوشه ی سمت راست و پایین نیز دارای دو ردیف یکی با نسبت 2 و دیگری با نسبت 1 به این شکل بدون مشکل ویجت ها را در کنار هم قرار دادیم حالا اگر صفحه را نیز بر گردانید این نسبت ها حفظ می شودبه همین سادگی به همین خوشمزگی.من از این ویجت یاد گرفتم مهم نیست کجا باشم در هر اندازه ای از جامعه و هر فعالیتی بهترینم را به اجرا بگذارم و بیش ترین تلاشم را کنم نه فقط در یک سایز مشخصی از جامعه مثل همیشه می گویم و باز خواهم گفت اگر مطلب براتون مفید بوده لینک را با دوستاتون در لینکدین تلگرام و و و انتشار دهید تا به طرفداران فلاتر روز به روز افزوده شودروز های زیبا و جذاااااااااااااااااابی داشته باشید قلب یادتون نره :)نوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاترایدی کانال برای دسترسی به تمام اموزش ها @Learnpgلینک کانال https://t.me/joinchat/AAAAAFDR-mppe-ciC6X1Qgایدی تلگرام بنده @pejmanprogrammer</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Thu, 06 Feb 2020 12:52:34 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت 21 (SafeArea در فلاتر)</title>
                <link>https://virgool.io/@pejmanprogrammer/%D9%88%DB%8C%D8%AC%D8%AA-21-safearea-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-a3dcgfgichbm</link>
                <description> خوب دوستان عزیز بریم سراغ یکی از ویجت های جذاااااب فلاتر یعنی SafeAreaیک برنامه نویس داشت توی راهرو با خودش غر می زد که اه با این نوار بالای صفحه چکار کنم همش توی دست و پاست ؟ چطوری میتونم از شر این وضعیت که در اطراف صفحه برای ویجت هام می افته خلاص بشم  خوشبختانه فلاتر عزیز اونجا حضور داشت و بهش با یک کلمه جواب داد SafeAreaخوب بریم سراغ کدش و کمی باهاش دست و پنجه گرم کنیم :)class SafeAreaWidget extends StatefulWidget {
  @override
  _SafeAreaWidgetState createState() =&gt; _SafeAreaWidgetState();
}

class _SafeAreaWidgetState extends State&lt;SafeAreaWidget&gt; {
  ///Bool value to control the behaviour of SafeArea widget.
  bool _isEnabled = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        top: _isEnabled,
        bottom: _isEnabled,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          mainAxisSize: MainAxisSize.max,
          children: &lt;Widget&gt;[
            Container(
              width: MediaQuery.of(context).size.width,
              color: Colors.blue,
              child: Text(
                &amp;quotThis widget is below safe area. If you remove the SafeArea &amp;quot
                    &amp;quotwidget then this text will be behind the notch.&amp;quot,
                textAlign: TextAlign.center,
                style: TextStyle(color: Colors.white),
              ),
            ),

            ///Press this button to toggle the value of _isEnabled variable
            RaisedButton(
              textColor: Colors.white,
              color: Colors.indigo,
              onPressed: () =&gt; setState(() {
                    _isEnabled == true ? _isEnabled = false : _isEnabled = true;
                  }),
              child: Text(_isEnabled ? &amp;quotDisable SafeArea&amp;quot : &amp;quotEnable SafeArea&amp;quot),
            ),

            Container(
              width: MediaQuery.of(context).size.width,
              color: Colors.blue,
              child: Text(
                &amp;quotThis widget is above safe area&amp;quot,
                textAlign: TextAlign.center,
                style: TextStyle(color: Colors.white),
              ),
            ),
          ],
        ),
      ),
    );
  }
}با استفاده از مقادیر در جهات مختلف میتوانیم مانع هجوم ویجت به انجا شویم در مثال بالا top و bottom که در یک وضعیت True است و اطلاعات زیر نوار ابزار بالا و بالای قسمت پایین گوشی است (خیلی شیک و مجلسی چیده شده ) و در وضعیت False اطلاعات زیر نوار بالای گوشی است و کلا نامرتب می باشدبه وضعیت زیر دقت کنیدبه همین سادگی به همین خوشمزگی.من از این ویجت یاد گرفتم حتی بی نظمی های کوچک را هم باید بهش دقت و اصلاح کرد چون در حال تبدیل به یک فاجعه هستند پس همین الان دست به کار شومثل همیشه می گویم و باز خواهم گفت اگر مطلب براتون مفید بوده لینک را با دوستاتون در لینکدین تلگرام و و و انتشار دهید تا به طرفداران فلاتر روز به روز افزوده شودروز های زیبا و جذاااااااااااااااااابی داشته باشید قلب یادتون نره :)نوشته شده توسط پژمان حاجی حیدری یک دوستدار فلاتر</description>
                <category>پژمان حاجی حیدری</category>
                <author>پژمان حاجی حیدری</author>
                <pubDate>Tue, 04 Feb 2020 12:44:44 +0330</pubDate>
            </item>
            </channel>
</rss>