<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد پوربافرانی</title>
        <link>https://virgool.io/feed/@m.pourbafarani</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 20:28:07</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>محمد پوربافرانی</title>
            <link>https://virgool.io/@m.pourbafarani</link>
        </image>

                    <item>
                <title>آشنایی با state management(مدیریت وضعیت) StatefulWidget در فلاتر</title>
                <link>https://virgool.io/@m.pourbafarani/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-state-management%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%88%D8%B6%D8%B9%DB%8C%D8%AA-statefulwidget-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-on4bxfpmconm</link>
                <description>در Flutter، هر برنامه شامل وضعیت‌هایی است که می‌توانند تغییر کنند و در نتیجه باعث تغییر در رابط کاربری شود. به طور مثال، فرض کنید که شما یک اپلیکیشن تحت وب دارید که در آن کاربران می‌توانند به یک لیست پست‌های بلاگرها دسترسی داشته باشند. اگر یکی از این پست‌ها را باز کنید، نظرات کاربران به صورت دینامیک در بخش نظرات باید نمایش داده شود. در اینجا، وضعیت نظرات، یک مثال از وضعیت‌هایی است که ممکن است در یک برنامه Flutter تغییر کند. در این نوع مدیریت وضعیت برای مدیریت وضعیت‌ها  از setState استفاده می‌شود. وقتی که یک وضعیت تغییر می‌کند، setState فراخوانی می‌شود  و سپس Flutter به صورت خودکار رابط کاربری را بازسازی می‌کند و  این عمل به این معنی است که درخت widget با تمام فرزندانش از نو بازسازی میشوند تا تغییرات جدیدی که ایجاد شده‌اند، در صفحه نمایش نشان داده شوند.خب از همین اقدام setstate می شود نتیجه گرفت که این نوع مدیریت وضعیت مناسب اپلیکیشن های با درخت widget کوچک می باشد چون باز سازی آن ها زمان کمتری نیاز دارد و زیاد در پرفورمنس برنامه تاثیر بسزایی ندارد.به طور کلی، استفاده از setState به این شکل است که شما باید وضعیت جدیدی را ایجاد کنید و سپس آن را به عنوان ورودی به setState بدهید تا رابط کاربری مجددا بازسازی شود. به عنوان مثال، فرض کنید که شما یک پروژه Flutter دارید که دارای یک دکمه است و هر بار که این دکمه فشار داده می‌شود، یک متن به عنوان وضعیت جدید نمایش داده می‌شود. کد زیر نشان می‌دهد که چگونه setState می‌تواند برای این منظور استفاده شود: import &#039;package:flutter/material.dart&#039;;  void main() =&gt; runApp(MyApp());  class MyApp extends StatefulWidget {   @override  _MyAppState createState() =&gt; _MyAppState(); }  class _MyAppState extends State&lt;MyApp&gt; {     String _displayText = &#039;Initial Text&#039;;    void _changeText() {     setState(() {       _displayText = &#039;New Text&#039;;     });   }  @override  Widget build(BuildContext context) {    return MaterialApp(      home: Scaffold(        appBar: AppBar(          title: Text(&#039;Example App&#039;),        ),        body: Center(          child: Column(            mainAxisAlignment: MainAxisAlignment.center,            children: &lt;Widget&gt;[              Text(                _displayText,                style: TextStyle(fontSize: 20),              ),              RaisedButton(                child: Text(&#039;Change Text&#039;),                onPressed: _changeText,              )            ],          ),        ),      ),    );  }}در این کد، یک وضعیت displayText_ به عنوان متن اولیه مشخص شده است. همچنین یک دکمه وجود دارد که هر بار که فشار داده می‌شود، متن displayText_ به &quot;New Text&quot; تغییر می‌کند. این تغییر در وضعیت با استفاده از setState صورت می‌گیرد.به طور خلاصه، setState یک روش برای تغییر وضعیت‌ها در Flutter است. با استفاده از setState، می‌توانید وضعیت جدید را ایجاد کرده و رابط کاربری را مجدداً بازسازی کنید تا تغییرات جدیدی که ایجاد شده‌اند، در صفحه نمایش نشان داده شوند.</description>
                <category>محمد پوربافرانی</category>
                <author>محمد پوربافرانی</author>
                <pubDate>Sat, 15 Apr 2023 00:20:53 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با state management(مدیریت وضعیت) در فلاتر: روش‌ها و استفاده از آن‌ها</title>
                <link>https://virgool.io/@m.pourbafarani/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-state-management%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%88%D8%B6%D8%B9%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A2%D9%86-%D9%87%D8%A7-em12k0elqbgi</link>
                <description> یکی از مهم‌ترین چالش‌هایی که برنامه‌نویسانی که با فلاتر کار می‌کنند با آن روبرو می‌شوند، مدیریت وضعیت است. در این مقاله، با مفهوم مدیریت وضعیت در فلاتر آشنا می‌شویم و روش‌های مختلف مدیریت وضعیت را بررسی می‌کنیم.مفهوم مدیریت وضعیت در فلاتردر فلاتر، وضعیت (state) شامل داده‌هایی است که توسط ویجت‌ها (widgets) در برنامه نمایش داده می‌شود. به عبارت دیگر، وضعیت اصلی تمامی اطلاعاتی است که در نمایش برنامه تحت عنوان وضعیت به کار می‌روند، یا به زبان ساده تر نمایش کاملی از درخت widget که در حال render شدن برای نمایش به کاربر می باشد. در فلاتر، وضعیت یک ساختار داده‌ای است که معمولاً در یک کلاس از نوع StatefulWidget یا StatelessWidget قرار می‌گیرد و به عنوان پارامتری برای ویجت‌های دیگر در همان درخت ویجت ارسال می‌شود.وضعیت (state)در فلاتر قابل تغییر است و به عنوان یکی از اصلی‌ترین موارد در برنامه‌نویسی فلاتر، مدیریت و ذخیره آن بسیار مهم است.در فلاتر، چندین روش برای مدیریت وضعیت وجود دارد که در ادامه به معرفی و توضیح هرکدام از آن‌ها خواهیم پرداخت:استفاده از StatefulWidgetاستفاده از Bloc patternاستفاده از Cubit patternاستفاده از Provider patternاستفاده از Redux patternاستفاده از MobXاستفاده از GetX patternاستفاده از Riverpodاستفاده از Scoped Model patternاستفاده از InheritedWidgetاستفاده از ValueNotifierدر ادامه به معرفی و توضیح هرکدام از آن‌ها خواهیم پرداخت.</description>
                <category>محمد پوربافرانی</category>
                <author>محمد پوربافرانی</author>
                <pubDate>Fri, 14 Apr 2023 22:36:09 +0330</pubDate>
            </item>
            </channel>
</rss>