<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>programmingshow | پروگرمینگ شو</title>
	<atom:link href="https://programmingshow.ir/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingshow.ir</link>
	<description>آموزش تخصصی برنامه نویسی </description>
	<lastBuildDate>Sun, 01 Sep 2024 06:30:50 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://programmingshow.ir/wp-content/uploads/2024/10/elementor/thumbs/logo-512-qx3z74r3csu7cz4ph342bcldcbl3zej8faux3utlf2.png</url>
	<title>programmingshow | پروگرمینگ شو</title>
	<link>https://programmingshow.ir</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>آموزش validation در فلاتر</title>
		<link>https://programmingshow.ir/what-is-validation-in-flutter/</link>
					<comments>https://programmingshow.ir/what-is-validation-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sun, 01 Sep 2024 06:30:50 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2976</guid>

					<description><![CDATA[قبل از اینکه به نحوه پیاده‌سازی validation در فلاتر بپردازیم، باید به اهمیت این موضوع بپردازیم. هر برنامه‌ای که با داده‌های ورودی کاربر سروکار دارد، باید اطمینان حاصل کند که داده‌های ورودی معتبر هستند]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر (Flutter)</a></strong> یکی از فریمورک‌های محبوب توسعه اپلیکیشن‌های موبایل است که به توسعه‌دهندگان امکان می‌دهد تا اپلیکیشن‌های زیبا و سریع برای اندروید و iOS بسازند. یکی از موضوعات مهم در توسعه اپلیکیشن‌ها، به‌خصوص اپلیکیشن‌های فرم‌محور، <strong>Validation</strong> است. Validation به ما کمک می‌کند تا از ورود داده‌های نامعتبر توسط کاربران جلوگیری کنیم. در این مقاله به صورت جامع به آموزش validation در فلاتر می‌پردازیم.</p>
<h2></h2>
<h2><span style="color: #c90000;"><strong>چرا Validation اهمیت دارد؟</strong></span></h2>
<p>قبل از اینکه به نحوه پیاده‌سازی validation در فلاتر بپردازیم، باید به اهمیت این موضوع بپردازیم. هر برنامه‌ای که با داده‌های ورودی کاربر سروکار دارد، باید اطمینان حاصل کند که داده‌های ورودی معتبر هستند. اگر ورودی‌های نامعتبر به سیستم وارد شوند، می‌توانند منجر به بروز خطاها، کاهش امنیت و نارضایتی کاربران شوند.</p>
<p>برای مثال، فرض کنید یک فرم ثبت‌نام دارید که از کاربر می‌خواهد ایمیل خود را وارد کند. اگر ایمیل وارد شده معتبر نباشد، نمی‌توانیم با کاربر ارتباط برقرار کنیم. یا اگر کاربر رمز عبوری وارد کند که ضعیف است، امنیت حساب کاربری او در معرض خطر قرار می‌گیرد. بنابراین، اعمال validation در فلاتر امری ضروری است.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c90000;">نحوه پیاده‌سازی Validation در فلاتر</span></strong></h2>
<p>فلاتر ابزارهای مختلفی برای اعمال <a href="https://docs.flutter.dev/cookbook/forms/validation" target="_blank" rel="noopener">validation</a> فراهم می‌کند. در این بخش، به بررسی چند روش رایج برای پیاده‌سازی validation در فلاتر خواهیم پرداخت.</p>
<h3></h3>
<h3><strong><span style="color: #c90000;">استفاده از <code>TextFormField</code> و <code>Validator</code></span></strong></h3>
<p><a href="https://docs.flutter.dev/cookbook/forms/validation" target="_blank" rel="noopener">یکی از رایج‌ترین روش‌های validation در فلاتر</a>، استفاده از <code>TextFormField</code> است. این ویجت قابلیت تعریف یک validator را به شما می‌دهد. Validator یک تابع است که ورودی کاربر را بررسی می‌کند و در صورت نامعتبر بودن، یک پیام خطا برمی‌گرداند.</p>
<div class="dark bg-gray-950 contain-inline-size rounded-md border-[0.5px] border-token-border-medium"></div>
<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2985" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-1-1.png" alt="استفاده از TextFormField و Validator" width="768" height="413" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>در این مثال، ابتدا بررسی می‌کنیم که آیا فیلد خالی است یا نه. سپس با استفاده از یک الگوی Regular Expression، فرمت ایمیل را بررسی می‌کنیم.</p>
<p>&nbsp;</p>
<h3><span style="color: #c90000;"><strong>مدیریت فرم‌ها با &lt;&lt;<code>GlobalKey&lt;FormState&gt;</code></strong></span></h3>
<p>برای مدیریت و بررسی اعتبار کل یک فرم، می‌توانیم از یک <code>Form</code> با استفاده از <code>GlobalKey&lt;FormState&gt;</code> استفاده کنیم. این کلید به ما امکان می‌دهد تا به وضعیت فرم دسترسی داشته باشیم و از متد <code>validate()</code> برای بررسی اعتبار تمام فیلدها استفاده کنیم.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2986" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1-1.png" alt="مدیریت فرم‌ها با GlobalKey&lt;FormState&gt;" width="826" height="804" /></p>
<p>&nbsp;</p>
<p>در این کد، از یک <code>Form</code> با کلید <code>_formKey</code> استفاده کرده‌ایم که امکان بررسی کل فرم را به ما می‌دهد. با کلیک بر روی دکمه &#8220;ارسال&#8221;، ابتدا فرم اعتبارسنجی می‌شود و سپس در صورت معتبر بودن، پیام موفقیت نمایش داده می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c90000;">استفاده از کتابخانه‌های جانبی</span></strong></h3>
<p>فلاتر دارای کتابخانه‌های جانبی زیادی است که می‌توانند به شما در فرآیند validation کمک کنند. یکی از این کتابخانه‌ها، <code>flutter_form_builder</code> است که ابزارهای متنوعی برای ساخت و مدیریت فرم‌ها و validation فراهم می‌کند.</p>
<p>برای استفاده از این کتابخانه، ابتدا باید آن را در فایل <code>pubspec.yaml</code> اضافه کنید:</p>
<p>&nbsp;</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2987" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1-1.png" alt="استفاده از کتابخانه‌های جانبی" width="552" height="264" /></p>
<p>&nbsp;</p>
<p>سپس می‌توانید از ویجت‌های این کتابخانه برای ساخت فرم و انجام validation استفاده کنید:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2988" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11-1-1.png" alt=" ویجت‌های این کتابخانه برای ساخت فرم و انجام validation استفاده کنی" width="744" height="357" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>در این مثال، از <code>FormBuilderTextField</code> استفاده کرده‌ایم که مشابه <code>TextFormField</code> است اما امکانات بیشتری برای validation فراهم می‌کند. با استفاده از <code>FormBuilderValidators.compose</code>، می‌توانیم چندین validator را با هم ترکیب کنیم.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c90000;">پیاده‌سازی Validation سفارشی</span></strong></h3>
<p>اگر نیاز دارید که Validation خاص و سفارشی برای فیلدهای خود پیاده‌سازی کنید، می‌توانید از یک validator سفارشی استفاده کنید. برای این کار، کافی است یک تابع تعریف کنید که نوع ورودی مورد نظر را بپذیرد و در صورت نامعتبر بودن، یک پیام خطا برگرداند.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2989" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1-1.png" alt=" پیاده‌سازی Validation سفارشی" width="654" height="357" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>سپس می‌توانید این تابع را به عنوان validator به ویجت <code>TextFormField</code> یا هر ویجت دیگری که از validator پشتیبانی می‌کند، اضافه کنید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2990" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-2.png" alt="به عنوان validator به ویجت TextFormField یا هر ویجت دیگری که از validator پشتیبانی می‌کند، اضافه کنید" width="694" height="283" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c90000;">استفاده از متدهای Async برای Validation</span></strong></h3>
<p>در بعضی مواقع، ممکن است نیاز داشته باشید که یک فرآیند asynchronous مانند بررسی موجود بودن نام کاربری در سرور را برای validation انجام دهید. برای این کار می‌توانید از متدهای async در validator استفاده کنید. اگرچه فلاتر به صورت پیش‌فرض از این نوع validation پشتیبانی نمی‌کند، اما می‌توانید با تغییراتی در طراحی فرم خود، این کار را انجام دهید.</p>
<p>برای مثال، می‌توانید یک تابع async تعریف کنید که داده‌ها را به سرور ارسال کند و سپس نتیجه را برگرداند:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2991" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-15-1.png" alt="استفاده از متدهای Async برای Validation" width="762" height="432" /></p>
<p>&nbsp;</p>
<p>سپس می‌توانید این تابع را در فرآیند validation خود استفاده کنید. با این حال، باید مطمئن شوید که فرآیند اعتبارسنجی به درستی و در زمان مناسب انجام می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c90000;">نتیجه‌گیری</span></strong></h2>
<p>پیاده‌سازی validation در فلاتر به توسعه‌دهندگان امکان می‌دهد تا از ورود داده‌های نامعتبر توسط کاربران جلوگیری کنند و تجربه کاربری بهتری را فراهم آورند. با استفاده از ابزارها و کتابخانه‌های مختلف فلاتر، می‌توانید validation‌های پیچیده و سفارشی را پیاده‌سازی کنید. امیدواریم این آموزش رایگان فلاتر به شما در یادگیری و پیاده‌سازی validation در پروژه‌های خود کمک کرده باشد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/what-is-validation-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>چالش احراز هویت با TextFormField در فلاتر</title>
		<link>https://programmingshow.ir/textformfiled-validation-in-flutter/</link>
					<comments>https://programmingshow.ir/textformfiled-validation-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Fri, 30 Aug 2024 19:16:01 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2975</guid>

					<description><![CDATA[احراز هویت یکی از مهم‌ترین و چالش‌برانگیزترین بخش‌های توسعه‌ی اپلیکیشن‌های موبایل است. این فرآیند شامل تأیید هویت کاربران از طریق اطلاعاتی مانند ایمیل و کلمه عبور می‌شود]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>احراز هویت یکی از مهم‌ترین و چالش‌برانگیزترین بخش‌های توسعه‌ی اپلیکیشن‌های موبایل است. این فرآیند شامل تأیید هویت کاربران از طریق اطلاعاتی مانند ایمیل و کلمه عبور می‌شود. در <strong><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a></strong>، یکی از ابزارهای مهم برای پیاده‌سازی فرم‌های ورود و احراز هویت، <code>TextFormField</code> است. در این مقاله به بررسی چالش‌های احراز هویت با استفاده از <code>TextFormField</code> در فلاتر می‌پردازیم و نحوه‌ی مدیریت این چالش‌ها را توضیح خواهیم داد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d10000;">فلاتر چیست؟</span></strong></h2>
<p>فلاتر (Flutter) یک فریم‌ورک متن‌باز است که توسط گوگل توسعه داده شده و برای ساختن اپلیکیشن‌های موبایل، وب و دسکتاپ استفاده می‌شود. فلاتر به توسعه‌دهندگان این امکان را می‌دهد که با یک کدبیس واحد، اپلیکیشن‌هایی با عملکرد بالا و ظاهر زیبا برای پلتفرم‌های مختلف ایجاد کنند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d10000;">TextFormField در فلاتر</span></strong></h2>
<p>یکی از اجزای کلیدی برای ایجاد فرم‌های کاربرپسند در فلاتر، <code>TextFormField</code> است. این ویجت یک جعبه متن قابل ویرایش است که به کاربر امکان می‌دهد اطلاعاتی مانند ایمیل، شماره تلفن یا رمز عبور را وارد کند. <a href="https://docs.flutter.dev/cookbook/forms/validation" target="_blank" rel="noopener"><strong><code>TextFormField</code></strong></a> علاوه بر قابلیت ویرایش متن، امکاناتی مانند اعتبارسنجی، مدیریت حالت و استایل‌دهی نیز دارد که آن را به ابزاری قدرتمند برای احراز هویت تبدیل می‌کند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d10000;">چالش‌های رایج در احراز هویت</span></strong></h2>
<p>هنگام پیاده‌سازی احراز هویت در اپلیکیشن‌های فلاتر، توسعه‌دهندگان ممکن است با چندین چالش روبه‌رو شوند. در ادامه به برخی از این چالش‌ها و راه‌حل‌های پیشنهادی برای آن‌ها پرداخته می‌شود.</p>
<p>&nbsp;</p>
<h3><span style="color: #d10000;"><strong>1. اعتبارسنجی ورودی‌ها</strong></span></h3>
<p>یکی از مهم‌ترین چالش‌ها در احراز هویت، اطمینان از صحت اطلاعات وارد شده توسط کاربر است. برای مثال، باید بررسی کنید که آیا ایمیل وارد شده فرمت صحیحی دارد یا خیر، و یا آیا کلمه عبور شامل حداقل یک حرف بزرگ، یک عدد و یک کاراکتر خاص است یا خیر.</p>
<p>برای این منظور، می‌توانید از ویژگی <code>validator</code> در <code>TextFormField</code> استفاده کنید. این ویژگی به شما اجازه می‌دهد که یک تابع اعتبارسنجی تعریف کنید که ورودی کاربر را بررسی کرده و در صورت نامعتبر بودن، پیام خطا نمایش دهد.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2977" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1.png" alt="اعتبارسنجی ورودی‌ها" width="774" height="413" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1.png 774w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-300x160.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-768x410.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-600x320.png 600w" sizes="(max-width: 774px) 100vw, 774px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d10000;">مدیریت حالت</span></strong></h3>
<p>مدیریت صحیح حالت فرم یکی دیگر از چالش‌های مهم در احراز هویت است. وقتی که کاربر اطلاعات خود را وارد می‌کند، فرم باید به صورت پویا به تغییرات پاسخ دهد. برای مثال، اگر کاربر پس از وارد کردن ایمیل اشتباه، آن را اصلاح کند، باید پیام خطای مربوطه نیز به روز رسانی شود.</p>
<p>در فلاتر، می‌توانید با استفاده از <code>Form</code> و <code>GlobalKey</code> وضعیت فرم را مدیریت کنید. این ترکیب به شما امکان می‌دهد که به راحتی وضعیت فرم را ردیابی کرده و آن را اعتبارسنجی کنید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2978" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-1.png" alt="مدیریت حالت" width="790" height="711" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-1.png 790w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-1-300x270.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-1-768x691.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-1-600x540.png 600w" sizes="(max-width: 790px) 100vw, 790px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d10000;">مدیریت رمز عبور</span></strong></h3>
<p>یکی دیگر از چالش‌های مرتبط با احراز هویت، مدیریت رمز عبور است. برای بهبود تجربه کاربری، باید امکان نمایش و پنهان کردن رمز عبور را فراهم کنید. همچنین، باید از کاربران بخواهید که رمز عبور قوی‌تری انتخاب کنند.</p>
<p>در فلاتر، می‌توانید با استفاده از ویژگی <code>obscureText</code> رمز عبور را پنهان کنید و با استفاده از یک آیکون تعاملی، به کاربر اجازه دهید تا رمز عبور را مشاهده کند.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2981" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-1.png" alt="مدیریت رمز عبور" width="720" height="525" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-1.png 720w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-1-300x219.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-1-600x438.png 600w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d10000;">رسیدگی به خطاهای سرور</span></strong></h3>
<p>یکی دیگر از چالش‌های مهم در احراز هویت، مدیریت خطاهای احتمالی است که از سمت سرور دریافت می‌شود. برای مثال، ممکن است کاربر اطلاعات صحیحی وارد کرده باشد اما به دلیل مشکلات شبکه یا خطاهای سروری، عملیات احراز هویت با شکست مواجه شود. در چنین مواردی، نمایش پیام‌های خطای مناسب به کاربر ضروری است.</p>
<p>می‌توانید از <code>try-catch</code> برای مدیریت خطاهای احتمالی استفاده کنید و بسته به نوع خطا، پیام مناسبی به کاربر نمایش دهید.</p>
<div class="dark bg-gray-950 contain-inline-size rounded-md border-[0.5px] border-token-border-medium"></div>
<h3></h3>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2982" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1-1.png" alt="رسیدگی به خطاهای سرور" width="768" height="339" /></p>
<h3></h3>
<p>&nbsp;</p>
<h2><strong><span style="color: #d10000;">جمع‌بندی</span></strong></h2>
<p>احراز هویت در اپلیکیشن‌های موبایل یکی از مهم‌ترین وظایف توسعه‌دهندگان است و نیازمند دقت و مدیریت دقیق جزئیات است. با استفاده از <code>TextFormField</code> در فلاتر، می‌توانید فرم‌های احراز هویت کاربرپسند و امنی ایجاد کنید. این مقاله به بررسی چالش‌های رایج در این زمینه پرداخت و راه‌حل‌های عملی برای هر یک از آن‌ها ارائه داد.</p>
<p>با درک بهتر این چالش‌ها و راه‌های مقابله با آن‌ها، می‌توانید اپلیکیشن‌هایی با عملکرد بهتر و تجربه کاربری بالاتر ایجاد کنید. برای آموزش رایگان فلاتر و یادگیری بیشتر در زمینه احراز هویت و دیگر مباحث مهم، می‌توانید منابع آموزشی آنلاین و دوره‌های رایگان موجود را بررسی کنید تا مهارت‌های خود را ارتقاء دهید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/textformfiled-validation-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>اهمیت مرتب نوشتن کد در فلاتر</title>
		<link>https://programmingshow.ir/%d8%a7%d9%87%d9%85%db%8c%d8%aa-%d9%85%d8%b1%d8%aa%d8%a8-%d9%86%d9%88%d8%b4%d8%aa%d9%86-%da%a9%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/</link>
					<comments>https://programmingshow.ir/%d8%a7%d9%87%d9%85%db%8c%d8%aa-%d9%85%d8%b1%d8%aa%d8%a8-%d9%86%d9%88%d8%b4%d8%aa%d9%86-%da%a9%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Tue, 13 Aug 2024 06:30:44 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2860</guid>

					<description><![CDATA[مرتب نوشتن کد به معنای سازماندهی و ساختاردهی کدها به گونه‌ای است که خوانایی، فهم و نگهداری آن‌ها را تسهیل کند. کدی که به طور مرتب نوشته شده باشد، برای دیگر برنامه‌نویسان و حتی خود نویسنده کد در]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> به عنوان یکی از محبوب‌ترین فریمورک‌های توسعه اپلیکیشن‌های موبایل و وب، به برنامه‌نویسان این امکان را می‌دهد تا با استفاده از یک کدبیس واحد، برنامه‌هایی زیبا و کارآمد برای سیستم‌عامل‌های مختلف توسعه دهند. یکی از اصول اساسی که در تمام مراحل توسعه با فلاتر باید به آن توجه داشت، &#8220;مرتب نوشتن کد&#8221; است. این اصل نه تنها در فلاتر بلکه در هر زبان و فریمورکی از اهمیت بالایی برخوردار است و می‌تواند تاثیر بسزایی بر کیفیت و نگهداری پروژه‌های نرم‌افزاری داشته باشد.</p>
<p>&nbsp;</p>
<h2></h2>
<h2><span style="color: #db0000;"><strong>اهمیت مرتب نوشتن کد</strong></span></h2>
<p>مرتب نوشتن کد به معنای سازماندهی و ساختاردهی کدها به گونه‌ای است که خوانایی، فهم و نگهداری آن‌ها را تسهیل کند. کدی که به طور مرتب نوشته شده باشد، برای دیگر برنامه‌نویسان و حتی خود نویسنده کد در آینده، قابل فهم‌تر خواهد بود. در ادامه، برخی از دلایل اصلی اهمیت مرتب نوشتن کد در فلاتر را بررسی می‌کنیم.</p>
<p>&nbsp;</p>
<figure id="attachment_1808" aria-describedby="caption-attachment-1808" style="width: 480px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-1808" src="https://programmingshow.ir/wp-content/uploads/2024/05/flutter.webp" alt="flutter logo" width="480" height="480" /><figcaption id="caption-attachment-1808" class="wp-caption-text">flutter logo</figcaption></figure>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">خوانایی بیشتر کد</span></strong></h2>
<p>خوانایی کد یکی از مهم‌ترین دلایل مرتب نوشتن کد است. کدی که به خوبی سازماندهی شده باشد، به راحتی قابل خواندن و درک است. وقتی کدها مرتب نوشته می‌شوند، دیگر نیازی نیست که برنامه‌نویسان برای درک عملکرد کدها زمان زیادی صرف کنند. این موضوع به خصوص در پروژه‌های تیمی بسیار اهمیت دارد، زیرا اعضای تیم باید بتوانند به سرعت کدهای یکدیگر را درک کنند و تغییرات لازم را اعمال کنند.</p>
<p>در فلاتر، پروژه‌ها ممکن است شامل صدها و حتی هزاران خط کد باشند. اگر این کدها به درستی سازماندهی نشده باشند، فهم آن‌ها دشوار خواهد شد. استفاده از ویجت‌های کوچک و تفکیک وظایف در کدها می‌تواند به بهبود خوانایی کمک کند. برای مثال، به جای نوشتن تمام کدهای UI در یک فایل، می‌توان ویجت‌های جداگانه برای هر بخش از رابط کاربری ایجاد کرد و سپس آن‌ها را در فایل اصلی فراخوانی کرد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">نگهداری آسان‌تر کد</span></strong></h2>
<p>یکی از بزرگترین چالش‌ها در توسعه نرم‌افزار، نگهداری و توسعه پروژه‌ها در طول زمان است. کدی که به درستی مرتب و سازماندهی شده باشد، به راحتی قابل نگهداری است. برنامه‌نویسان می‌توانند به سرعت تغییرات لازم را اعمال کنند و اشکالات را رفع کنند. همچنین، افزودن ویژگی‌های جدید به پروژه‌هایی که کدهای آن‌ها مرتب نوشته شده باشد، آسان‌تر خواهد بود.</p>
<p>در فلاتر، این موضوع اهمیت ویژه‌ای دارد، زیرا برنامه‌نویسان ممکن است نیاز به تغییرات مکرر در رابط کاربری داشته باشند یا ویژگی‌های جدیدی را به برنامه اضافه کنند. اگر کدها به درستی سازماندهی نشده باشند، اعمال این تغییرات می‌تواند زمان‌بر و پرخطر باشد.</p>
<p>&nbsp;</p>
<figure id="attachment_1861" aria-describedby="caption-attachment-1861" style="width: 805px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-1861" src="https://programmingshow.ir/wp-content/uploads/2023/10/dart-flutter.webp" alt="dart-flutter" width="805" height="576" srcset="https://programmingshow.ir/wp-content/uploads/2023/10/dart-flutter.webp 805w, https://programmingshow.ir/wp-content/uploads/2023/10/dart-flutter-300x215.webp 300w, https://programmingshow.ir/wp-content/uploads/2023/10/dart-flutter-768x550.webp 768w, https://programmingshow.ir/wp-content/uploads/2023/10/dart-flutter-600x429.webp 600w" sizes="(max-width: 805px) 100vw, 805px" /><figcaption id="caption-attachment-1861" class="wp-caption-text">dart-flutter</figcaption></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">کاهش خطاها و اشکالات</span></strong></h2>
<p>کدی که به خوبی مرتب شده باشد، کمتر دچار خطا و اشکال خواهد شد. وقتی کدها به طور منطقی سازماندهی شوند و از اصول تمیزنویسی پیروی کنند، احتمال بروز اشتباهات برنامه‌نویسی کاهش می‌یابد. برنامه‌نویسان می‌توانند به راحتی بخش‌های مختلف کد را مرور کرده و مشکلات احتمالی را شناسایی و رفع کنند.</p>
<p>در فلاتر، که به شدت وابسته به ویجت‌ها و مدیریت وضعیت است، مرتب نوشتن کد می‌تواند به جلوگیری از بروز مشکلات پیچیده کمک کند. به عنوان مثال، استفاده از ویجت‌های کوچک و مستقل به برنامه‌نویسان این امکان را می‌دهد تا به راحتی مشکلات را به یک ویجت خاص محدود کنند و سریع‌تر آن را رفع کنند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">افزایش کارایی تیمی</span></strong></h2>
<p>در پروژه‌های تیمی، اهمیت مرتب نوشتن کد دوچندان می‌شود. وقتی همه اعضای تیم از یک استاندارد مشخص برای نوشتن کد پیروی کنند، همکاری و هماهنگی بین اعضا افزایش می‌یابد. این موضوع به کاهش زمان توسعه و افزایش کارایی تیم منجر می‌شود.</p>
<p>در فلاتر، پروژه‌های تیمی معمولاً شامل توسعه‌دهندگان مختلفی هستند که هر یک وظیفه‌ای خاص بر عهده دارند. اگر کدها به خوبی سازماندهی و مرتب شده باشند، هر عضو تیم می‌تواند به راحتی بخش‌های مختلف پروژه را مدیریت کند و با دیگر اعضا هماهنگ شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">استفاده از بهترین شیوه‌ها و استانداردها</span></strong></h2>
<p>مرتب نوشتن کد به معنای پیروی از بهترین شیوه‌ها و استانداردهای توسعه است. در فلاتر، استفاده از شیوه‌های استاندارد و متداول می‌تواند به بهبود کیفیت کد و عملکرد برنامه کمک کند. برای مثال، استفاده از نام‌های معنادار برای متغیرها و کلاس‌ها، تفکیک مسئولیت‌ها در کلاس‌ها و ویجت‌ها، و استفاده از نظرات توضیحی (کامنت‌ها) در جاهای مناسب، از جمله بهترین شیوه‌ها در فلاتر هستند.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2153" src="https://programmingshow.ir/wp-content/uploads/2024/05/hot-reaload.webp" alt="" width="1920" height="1080" /></p>
<h2><strong><span style="color: #db0000;">بهبود مستندسازی</span></strong></h2>
<p>مستندسازی یکی از مهم‌ترین بخش‌های توسعه نرم‌افزار است. کدی که به خوبی مرتب شده باشد، به خودی خود نوعی مستندات است. برنامه‌نویسان می‌توانند با خواندن کد، به راحتی عملکرد و ساختار آن را درک کنند. علاوه بر این، مستندسازی کدی که به درستی مرتب شده باشد، آسان‌تر است، زیرا برنامه‌نویسان می‌توانند به راحتی نقاط کلیدی کد را شناسایی کرده و آن‌ها را توضیح دهند.</p>
<p>در فلاتر، مستندسازی می‌تواند شامل توضیح ساختار ویجت‌ها، توضیح رفتارهای پیچیده در برنامه، و ارائه مثال‌هایی برای استفاده از کلاس‌ها و توابع باشد. اگر کد به خوبی مرتب شده باشد، مستندسازی آن نیز موثرتر و کامل‌تر خواهد بود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">بهبود کارایی و سرعت توسعه</span></strong></h2>
<p>کدی که به خوبی مرتب شده باشد، به برنامه‌نویسان این امکان را می‌دهد تا سریع‌تر توسعه دهند و تغییرات لازم را اعمال کنند. مرتب نوشتن کد می‌تواند به کاهش زمان توسعه و افزایش بهره‌وری برنامه‌نویسان کمک کند. در فلاتر، که به دلیل استفاده از Hot Reload به سرعت توسعه معروف است، این موضوع اهمیت بیشتری پیدا می‌کند.</p>
<p>وقتی کدها به خوبی مرتب شده باشند، برنامه‌نویسان می‌توانند به سرعت بخش‌های مختلف برنامه را تغییر داده و نتیجه را مشاهده کنند. این امر به بهبود تجربه کاربری و افزایش رضایت مشتریان نیز منجر می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">سازگاری با ابزارهای کدنویسی</span></strong></h2>
<p>بسیاری از ابزارهای توسعه ویرایشگرهای کد، قابلیت‌هایی مانند شناسایی خطاها، پیشنهاد کد، و قالب‌بندی خودکار دارند. اگر کدها به درستی مرتب و سازماندهی شده باشند، این ابزارها می‌توانند به شکل موثرتری عمل کنند و به برنامه‌نویسان کمک کنند تا سریع‌تر و با دقت بیشتری کدنویسی کنند.</p>
<p>در فلاتر، ابزارهایی مانند VS Code و Android Studio با قابلیت‌های پیشرفته‌ای مانند Auto Format و Linting به برنامه‌نویسان کمک می‌کنند تا کدهای خود را به بهترین شکل ممکن بنویسند. استفاده از این ابزارها می‌تواند به بهبود کیفیت و عملکرد کدها کمک کند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #db0000;">نتیجه‌گیری</span></strong></h2>
<p>مرتب نوشتن کد در فلاتر یکی از اصول اساسی است که می‌تواند به بهبود کیفیت، خوانایی و نگهداری پروژه‌های نرم‌افزاری کمک کند. این اصل نه تنها به کاهش خطاها و اشکالات کمک می‌کند، بلکه باعث افزایش کارایی تیمی و بهبود تجربه کاربری می‌شود. با پیروی از بهترین شیوه‌ها و استانداردهای کدنویسی در فلاتر، می‌توان به راحتی پروژه‌هایی با کیفیت بالا و قابلیت نگهداری طولانی‌مدت ایجاد کرد.</p>
<p>در نهایت، مرتب نوشتن کد نه تنها به سود برنامه‌نویسان بلکه به سود مشتریان و کاربران نهایی نیز خواهد بود. برنامه‌هایی که با کدهای مرتب و سازماندهی‌شده توسعه یافته‌اند، اغلب پایدارتر، کارآمدتر و با کیفیت‌تر هستند و تجربه کاربری بهتری ارائه می‌دهند. بنابراین، همیشه به یاد داشته باشید که مرتب نوشتن کد در فلاتر یک ضرورت است، نه یک انتخاب.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/%d8%a7%d9%87%d9%85%db%8c%d8%aa-%d9%85%d8%b1%d8%aa%d8%a8-%d9%86%d9%88%d8%b4%d8%aa%d9%86-%da%a9%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>تمرین کد نویسی تمیز در فلاتر</title>
		<link>https://programmingshow.ir/clean-code-practice-in-flutter/</link>
					<comments>https://programmingshow.ir/clean-code-practice-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sun, 11 Aug 2024 06:30:43 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2859</guid>

					<description><![CDATA[تمیزنویسی کد یا Clean Code در فلاتر، مانند هر زبان یا فریمورک دیگر، از اصول و قواعدی پیروی می‌کند که کمک می‌کند کدها قابل خواندن، نگهداری و توسعه باشند. در زیر ۱۰ تمرین تمیزنویسی کد در فلاتر ]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>تمیزنویسی کد یا Clean Code در فلاتر، مانند هر زبان یا فریمورک دیگر، از اصول و قواعدی پیروی می‌کند که کمک می‌کند کدها قابل خواندن، نگهداری و توسعه باشند. در زیر ۱۰ تمرین تمیزنویسی کد در فلاتر همراه با مثال‌های عملی آورده شده است.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۱: انتخاب نام‌های معنادار برای متغیرها و کلاس‌ها</span></strong></h2>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> به جای استفاده از نام‌های عمومی مانند <code>temp</code>، <code>data</code> یا <code>x</code>، از نام‌های معنادار استفاده کنید.</p>
<p><strong>مثال:</strong></p>
<p>نامگذاری نادرست:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2872" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3.png" alt="" width="457" height="208" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3.png 457w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3-300x137.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></p>
<p>&nbsp;</p>
<p>نامگذاری درست:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2873" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4.png" alt="" width="457" height="208" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4.png 457w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4-300x137.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۲: استفاده از ویجت‌های کوچک و تابعی</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> برای بهبود خوانایی و قابلیت استفاده مجدد، ویجت‌ها را به بخش‌های کوچک‌تر تقسیم کنید.</p>
<p><strong>مثال:</strong></p>
<p>کد نامرتب:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2874" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5.png" alt="" width="553" height="432" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5.png 553w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5-300x234.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></p>
<p>&nbsp;</p>
<p>کد تمیزتر:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2875" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6.png" alt="" width="573" height="730" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6.png 573w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-235x300.png 235w" sizes="(max-width: 573px) 100vw, 573px" /></p>
<p>&nbsp;</p>
<h3></h3>
<h2><strong><span style="color: #d90000;">تمرین ۳: استفاده از <code>const</code> در ویجت‌های ثابت</span></strong></h2>
<p><strong>تمرین:</strong> همیشه از <code>const</code> در ویجت‌هایی که تغییر نمی‌کنند استفاده کنید تا عملکرد بهتری داشته باشید.</p>
<p><strong>مثال:</strong></p>
<p>بدون استفاده از <code>const</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2876" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7.png" alt="" width="573" height="245" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7.png 573w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-300x128.png 300w" sizes="(max-width: 573px) 100vw, 573px" /></p>
<p>&nbsp;</p>
<p>با استفاده از <code>const</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2877" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8.png" alt="" width="573" height="245" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8.png 573w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-300x128.png 300w" sizes="(max-width: 573px) 100vw, 573px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: #d90000;">تمرین ۴: مدیریت طول خطوط</span></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> طول خطوط کد را کوتاه نگه دارید و از شکستن خطوط در صورت لزوم استفاده کنید.</p>
<p><strong>مثال:</strong></p>
<p>کد طولانی:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2878" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9.png" alt="" width="1181" height="245" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9.png 1181w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-300x62.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1024x212.png 1024w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-768x159.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-600x124.png 600w" sizes="(max-width: 1181px) 100vw, 1181px" /></p>
<p>&nbsp;</p>
<p>کد تمیزتر:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2879" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10.png" alt="" width="637" height="339" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10.png 637w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-300x160.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-600x319.png 600w" sizes="(max-width: 637px) 100vw, 637px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۵: حذف کدهای بدون استفاده</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> همیشه کدهای بلااستفاده و کامنت‌های نامربوط را از پروژه حذف کنید.</p>
<p><strong>مثال:</strong></p>
<p>کد با متغیر بلااستفاده:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2880" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11.png" alt="" width="441" height="227" /></p>
<p>&nbsp;</p>
<p>کد تمیزتر:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2881" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12.png" alt="" width="441" height="208" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۶: استفاده از <code>final</code> برای متغیرهای غیرقابل تغییر</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> از <code>final</code> برای متغیرهایی که بعد از مقداردهی اولیه تغییر نمی‌کنند استفاده کنید.</p>
<p><strong>مثال:</strong></p>
<p>بدون <code>final</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2882" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13.png" alt="" width="441" height="208" /></p>
<p>&nbsp;</p>
<p>با <code>final</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2883" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14.png" alt="" width="441" height="208" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۷: استفاده از <code>const</code> برای ثابت‌ها</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> از <code>const</code> برای تعریف ثابت‌ها استفاده کنید.</p>
<p><strong>مثال:</strong></p>
<p>بدون استفاده از <code>const</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2884" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-15.png" alt="final double pi = 3.14159;
" width="441" height="208" /></p>
<p>&nbsp;</p>
<p>با استفاده از <code>const</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2885" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16-1.png" alt="const double pi = 3.14159;
" width="441" height="208" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۸: اجتناب از استفاده از کدهای پیچیده</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> از کدهای پیچیده و مبهم که فهم آن‌ها سخت است، خودداری کنید. کدهای ساده و واضح بنویسید.</p>
<p><strong>مثال:</strong></p>
<p>کد پیچیده:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2886" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17.png" alt="if (userCount &gt; 0) {
  print('Users exist');
} else {
  print('No users');
}
" width="481" height="283" /></p>
<p>&nbsp;</p>
<p>کد ساده‌تر:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2887" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18.png" alt="" width="737" height="245" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۹: اجتناب از تو در تویی بیش از حد</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> تا حد ممکن از تو در تو کردن کدها (nested code) پرهیز کنید تا کد خواناتر شود.</p>
<p><strong>مثال:</strong></p>
<p>کد با تو در تویی زیاد:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2888" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19.png" alt="" width="501" height="320" /></p>
<p>&nbsp;</p>
<p>کد ساده‌تر:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2889" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-20.png" alt="" width="629" height="264" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">تمرین ۱۰: استفاده از <code>extension</code> برای افزودن قابلیت به کلاس‌های موجود</span></strong></h2>
<p>&nbsp;</p>
<p><strong>تمرین:</strong> از قابلیت <code>extension</code> در دارت برای افزودن متدهای جدید به کلاس‌های موجود استفاده کنید.</p>
<p><strong>مثال:</strong></p>
<p>بدون استفاده از <code>extension</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2890" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-21.png" alt="" width="601" height="245" /></p>
<p>&nbsp;</p>
<p>با استفاده از <code>extension</code>:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2891" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-22.png" alt="" width="701" height="339" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">نتیجه‌گیری</span></strong></h2>
<p>این تمرین‌ها به شما کمک می‌کنند تا در نوشتن کدهای تمیز و قابل نگهداری در فلاتر حرفه‌ای‌تر شوید. با رعایت این اصول، کدهای شما خواناتر، قابل فهم‌تر و از نظر عملکردی بهینه‌تر خواهند شد. تمرین‌های ذکر شده نه تنها در فلاتر بلکه در سایر فریمورک‌ها و زبان‌های برنامه‌نویسی نیز کاربرد دارند و کمک می‌کنند کدهای بهتری بنویسید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/clean-code-practice-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>نمایش و مخفی کردن رمز عبور در فلاتر</title>
		<link>https://programmingshow.ir/password-visibility/</link>
					<comments>https://programmingshow.ir/password-visibility/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Fri, 09 Aug 2024 19:40:12 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2819</guid>

					<description><![CDATA[امروزه امنیت اطلاعات و حریم خصوصی کاربران در توسعه اپلیکیشن‌های موبایل بسیار حائز اهمیت است. یکی از قابلیت‌های اساسی برای بهبود تجربه کاربری و افزایش امنیت، امکان نمایش و مخفی کردن ]]></description>
										<content:encoded><![CDATA[<div class="markdown markdown-main-panel" dir="rtl">
<p>&nbsp;</p>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر (Flutter)</a> یک فریمورک توسعه نرم‌افزاری از شرکت گوگل است که برای ساخت اپلیکیشن‌های موبایل، وب و دسکتاپ از یک کدبیس واحد استفاده می‌کند. یکی از نیازهای رایج در اپلیکیشن‌های موبایل، امکان ورود کاربران با استفاده از نام کاربری و رمز عبور است. در این مقاله، به نحوه نمایش و مخفی کردن رمز عبور در فلاتر می‌پردازیم.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h2><strong><span style="color: #e00000;">مقدمه‌ای بر فلاتر</span></strong></h2>
<p>فلاتر با استفاده از <a href="https://dart.dev/" target="_blank" rel="noopener">زبان دارت (Dart)</a> توسعه یافته و به برنامه‌نویسان این امکان را می‌دهد تا با یک بار کدنویسی، اپلیکیشن‌هایی برای سیستم‌عامل‌های اندروید، iOS، وب و دسکتاپ تولید کنند. از ویژگی‌های برجسته فلاتر می‌توان به سرعت بالا در توسعه، رابط کاربری زیبا و قابل تنظیم، و جامعه پشتیبان قوی اشاره کرد.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h2><strong><span style="color: #e00000;">ایجاد فرم ورود کاربر</span></strong></h2>
<p>برای شروع، نیاز داریم یک فرم ساده برای ورود کاربر ایجاد کنیم که شامل دو فیلد برای نام کاربری و رمز عبور باشد. در این مثال، ابتدا یک پروژه جدید در فلاتر ایجاد می‌کنیم و سپس کد مربوط به فرم ورود را اضافه می‌کنیم.</p>
<h3></h3>
<h3></h3>
<h3><strong><span style="color: #e00000;">ایجاد پروژه جدید در فلاتر</span></strong></h3>
<p>برای ایجاد پروژه جدید، دستورات زیر را در خط فرمان اجرا کنید:</p>
</div>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2865" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon.png" alt="ایجاد پروژه جدید در فلاتر" width="655" height="245" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon.png 655w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-300x112.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-600x224.png 600w" sizes="(max-width: 655px) 100vw, 655px" /></p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h3><strong><span style="color: #e00000;">اضافه کردن فرم ورود</span></strong></h3>
<p>در فایل <code>lib/main.dart</code>، کد زیر را اضافه کنید:</p>
</div>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2866" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1.png" alt="اضافه کردن فرم ورود" width="917" height="1269" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1.png 917w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1-217x300.png 217w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1-740x1024.png 740w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1-768x1063.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-1-1-600x830.png 600w" sizes="(max-width: 917px) 100vw, 917px" /></p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h2></h2>
<h2><span style="color: #e00000;">توضیح کد</span></h2>
<p>&nbsp;</p>
<h3><span style="color: #e00000;"><code>main.dart</code></span></h3>
<p>در این فایل، ابتدا اپلیکیشن فلاتر را راه‌اندازی کرده و یک <code>StatelessWidget</code> به نام <code>MyApp</code> ایجاد می‌کنیم که درون آن از <code>MaterialApp</code> استفاده شده است. در <code>home</code> این اپلیکیشن، صفحه ورود <code>LoginScreen</code> قرار دارد.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h3><span style="color: #e00000;"><code>LoginScreen</code></span></h3>
<p>این ویجت یک <code>StatefulWidget</code> است که دارای حالت (State) قابل تغییر می‌باشد. در این حالت، یک متغیر به نام <code>_isObscured</code> تعریف شده که به صورت پیش‌فرض مقدار <code>true</code> دارد. این متغیر برای نشان دادن یا مخفی کردن متن رمز عبور استفاده می‌شود. همچنین، یک کنترلر برای فیلد رمز عبور ایجاد شده است.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<p>در متد <code>build</code>، از <code>Scaffold</code> استفاده کرده‌ایم تا ساختار کلی صفحه را تعیین کنیم. داخل <code>body</code>، از یک <code>Padding</code> با مقدار <code>16.0</code> استفاده شده تا فاصله مناسبی بین لبه صفحه و محتوا ایجاد شود. سپس از <code>Column</code> برای قرار دادن ویجت‌های مختلف به صورت عمودی استفاده شده است.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h3><strong><span style="color: #e00000;">فیلد نام کاربری و رمز عبور</span></strong></h3>
<p>برای فیلد نام کاربری از یک <code>TextField</code> ساده با <code>InputDecoration</code> استفاده شده است. فیلد رمز عبور کمی پیچیده‌تر است. در این فیلد، از <code>TextField</code> با ویژگی <code>obscureText</code> استفاده شده که مقدار آن برابر <code>_isObscured</code> است. این ویژگی تعیین می‌کند که متن ورودی به صورت مخفی نمایش داده شود یا نه.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<p>در بخش <code>InputDecoration</code> فیلد رمز عبور، یک <code>suffixIcon</code> به کار رفته که یک <code>IconButton</code> است. آیکون این دکمه بسته به مقدار <code>_isObscured</code> تغییر می‌کند (اگر <code>_isObscured</code> <code>true</code> باشد، آیکون چشم باز نمایش داده می‌شود و در غیر این صورت، آیکون چشم بسته). با کلیک روی این دکمه، مقدار <code>_isObscured</code> تغییر کرده و وضعیت نمایش یا مخفی بودن رمز عبور به‌روز می‌شود.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h2><strong><span style="color: #e00000;">بهبود تجربه کاربری</span></strong></h2>
<p>برای بهبود تجربه کاربری، می‌توانیم از قابلیت‌های بیشتری در این فرم استفاده کنیم. به عنوان مثال:</p>
<p>&nbsp;</p>
<h3><span style="color: #e00000;">استفاده از  <code>Form </code> و  <code>TextFormField</code></span></h3>
<p>برای اعتبارسنجی ورودی‌ها می‌توانیم از <code>Form</code> و <code>TextFormField</code> استفاده کنیم:</p>
</div>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2867" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1.png" alt="بهبود تجربه کاربری" width="899" height="1437" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1.png 899w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-188x300.png 188w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-641x1024.png 641w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-768x1228.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-1-600x959.png 600w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h3><strong><span style="color: #e00000;">توضیح کد</span></strong></h3>
<p>در این مثال، از <code>Form</code> و <code>TextFormField</code> برای ایجاد فیلدهای فرم استفاده شده است. <code>GlobalKey&lt;FormState&gt;</code> به عنوان کلید فرم تعریف شده و برای بررسی صحت ورودی‌ها به کار می‌رود. هر <code>TextFormField</code> دارای ویژگی <code>validator</code> است که برای اعتبارسنجی ورودی‌ها استفاده می‌شود. در صورتی که ورودی‌ها معتبر باشند، فرم ارسال می‌شود.</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="markdown markdown-main-panel" dir="rtl">
<h2><strong><span style="color: #e00000;">نتیجه‌گیری</span></strong></h2>
<p>در این مقاله، به نحوه نمایش و مخفی کردن رمز عبور در فلاتر پرداختیم و یک فرم ورود کاربر ساده ایجاد کردیم. سپس با استفاده از قابلیت‌های اضافی مانند <code>Form</code> و <code>TextFormField</code>، تجربه کاربری را بهبود دادیم. با استفاده از این روش‌ها، می‌توانید فرم‌های ورود کاربر را در اپلیکیشن‌های فلاتر خود به صورت حرفه‌ای‌تر پیاده‌سازی کنید.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/password-visibility/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>نمایش و مخفی کردن پسورد در فلاتر</title>
		<link>https://programmingshow.ir/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%a8%d8%ae%d8%b4-%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%be%d8%b3%d9%88%d8%b1%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/</link>
					<comments>https://programmingshow.ir/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%a8%d8%ae%d8%b4-%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%be%d8%b3%d9%88%d8%b1%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Wed, 07 Aug 2024 06:30:38 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2820</guid>

					<description><![CDATA[نمایش پسورد به کاربران اجازه می‌دهد تا در هنگام وارد کردن پسورد، از درستی آن اطمینان حاصل کنند. این قابلیت به ویژه در مواقعی که پسورد پیچیده است یا کاربران از دستگاه‌های کوچک استفاده می‌کنند]]></description>
										<content:encoded><![CDATA[<h3></h3>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> یکی از فریم‌ورک‌های قدرتمند و محبوب برای توسعه اپلیکیشن‌های موبایل است که توسط گوگل توسعه یافته است. این فریم‌ورک به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از یک کدبیس واحد، اپلیکیشن‌های زیبا و کارآمد برای اندروید و iOS بسازند. یکی از قابلیت‌های مهم در طراحی رابط کاربری اپلیکیشن‌ها، بخش نمایش و مخفی‌سازی پسورد است. این قابلیت به کاربران این امکان را می‌دهد تا هنگام وارد کردن پسورد، بتوانند در صورت نیاز، آن را مشاهده کنند. در این مقاله، به بررسی طراحی بخش نمایش پسورد در فلاتر می‌پردازیم.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: #b50000;"><strong>چرا نمایش پسورد مهم است؟</strong></span></h2>
<p>نمایش پسورد به کاربران اجازه می‌دهد تا در هنگام وارد کردن پسورد، از درستی آن اطمینان حاصل کنند. این قابلیت به ویژه در مواقعی که پسورد پیچیده است یا کاربران از دستگاه‌های کوچک استفاده می‌کنند، بسیار مفید است. از طرفی، امکان مخفی‌سازی پسورد نیز از اهمیت بالایی برخوردار است تا امنیت اطلاعات کاربران حفظ شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #b50000;">طراحی بخش نمایش پسورد در فلاتر</span></strong></h2>
<p>برای طراحی بخش نمایش پسورد در فلاتر، می‌توان از ویجت‌های مختلفی استفاده کرد. یکی از راه‌های ساده برای پیاده‌سازی این قابلیت، استفاده از <code>TextField</code> به همراه <a href="https://api.flutter.dev/flutter/material/TextField/obscureText.html" target="_blank" rel="noopener"><code>ObscureText</code></a> است. در ادامه، مراحل طراحی بخش نمایش پسورد به صورت گام به گام توضیح داده شده است.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">مرحله اول: ایجاد پروژه فلاتر</span></strong></h3>
<p>ابتدا یک پروژه جدید فلاتر ایجاد کنید. برای این کار می‌توانید از دستورات زیر در ترمینال یا خط فرمان استفاده کنید:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2839" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16.png" alt=" ایجاد پروژه فلاتر" width="902" height="227" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16.png 902w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16-300x75.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16-768x193.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-16-600x151.png 600w" sizes="(max-width: 902px) 100vw, 902px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">مرحله دوم: ایجاد ویجت TextField</span></strong></h3>
<p>در این مرحله، یک ویجت <a href="https://api.flutter.dev/flutter/material/TextField-class.html" target="_blank" rel="noopener"><code>TextField</code></a> ایجاد می‌کنیم که به کاربران اجازه می‌دهد تا پسورد خود را وارد کنند. برای این کار، کد زیر را در فایل <code>main.dart</code> قرار دهید:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2840" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17-1.png" alt=" ایجاد ویجت TextField" width="902" height="841" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17-1.png 902w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17-1-300x280.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17-1-768x716.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-17-1-600x559.png 600w" sizes="(max-width: 902px) 100vw, 902px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span style="color: #b50000;">توضیح کد</span></h3>
<p>در کد بالا، یک ویجت <code>TextField</code> ایجاد شده است که از ویژگی <code>obscureText</code> برای مخفی کردن پسورد استفاده می‌کند. همچنین، یک آیکون در سمت راست <code>TextField</code> قرار داده شده است که با فشردن آن، وضعیت مخفی‌سازی پسورد تغییر می‌کند.</p>
<ul>
<li><code>obscureText</code>: این ویژگی تعیین می‌کند که کاراکترهای وارد شده در <code>TextField</code> به صورت پسورد (مخفی) نمایش داده شوند یا خیر.</li>
<li><code>suffixIcon</code>: این ویژگی یک آیکون در انتهای <code>TextField</code> اضافه می‌کند که برای نمایش یا مخفی‌سازی پسورد استفاده می‌شود.</li>
<li><code>setState</code>: این متد وضعیت ویجت را به‌روزرسانی می‌کند تا تغییرات اعمال شده در <code>obscureText</code> نمایش داده شوند.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #b50000;">افزودن اعتبارسنجی (Validation) به فیلد پسورد</span></strong></h2>
<p>برای اطمینان از اینکه کاربران پسوردی معتبر وارد می‌کنند، می‌توانیم اعتبارسنجی را به فیلد پسورد اضافه کنیم. برای این کار، از ویجت <code>Form</code> و <code>TextFormField</code> استفاده می‌کنیم.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">مرحله سوم: افزودن اعتبارسنجی به فیلد پسورد</span></strong></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2841" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1.png" alt="افزودن اعتبارسنجی (Validation) به فیلد پسورد" width="848" height="1363" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1.png 848w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1-187x300.png 187w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1-637x1024.png 637w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1-768x1234.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-18-1-600x964.png 600w" sizes="(max-width: 848px) 100vw, 848px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">توضیح کد</span></strong></h3>
<p>در این کد، یک فرم (Form) ایجاد شده است که شامل یک فیلد پسورد با اعتبارسنجی است. ویژگی‌های مهم این فرم عبارتند از:</p>
<ul>
<li><code>Form</code>: ویجت فرم برای مدیریت و اعتبارسنجی ورودی‌های کاربر استفاده می‌شود.</li>
<li><code>TextFormField</code>: مشابه <code>TextField</code> است، اما با قابلیت‌های اضافی برای اعتبارسنجی.</li>
<li><code>validator</code>: یک تابع برای اعتبارسنجی ورودی کاربر که خطاها را در صورت وجود نمایش می‌دهد.</li>
<li><code>GlobalKey&lt;FormState&gt;</code>: کلید جهانی برای دسترسی به وضعیت فرم و انجام عملیات اعتبارسنجی.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: #b50000;"><strong>بهبود تجربه کاربری</strong></span></h2>
<p>برای بهبود تجربه کاربری، می‌توانیم به فیلد پسورد ویژگی‌های بیشتری اضافه کنیم. برخی از این ویژگی‌ها عبارتند از:</p>
<ol>
<li><strong>پیام‌های خطا (Error Messages):</strong> پیام‌های خطای دقیق و واضح می‌توانند به کاربران کمک کنند تا مشکلات ورودی خود را سریع‌تر برطرف کنند.</li>
<li><strong>راهنما (Helper Text):</strong> ارائه راهنما برای کاربران در مورد شرایط پسورد می‌تواند مفید باشد.</li>
<li><strong>تأیید پسورد (Password Confirmation):</strong> افزودن فیلد تأیید پسورد برای اطمینان از اینکه کاربر پسورد را به درستی وارد کرده است.</li>
</ol>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">مثال: افزودن راهنما و تأیید پسورد</span></strong></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2842" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1.png" alt="افزودن راهنما و تأیید پسورد" width="848" height="1902" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1.png 848w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1-134x300.png 134w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1-457x1024.png 457w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1-768x1723.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1-685x1536.png 685w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-19-1-600x1346.png 600w" sizes="(max-width: 848px) 100vw, 848px" /></p>
<p>&nbsp;</p>
<h3><strong><span style="color: #b50000;">توضیح کد</span></strong></h3>
<p>در این کد، دو فیلد پسورد ایجاد شده است: یکی برای وارد کردن پسورد و دیگری برای تأیید پسورد. همچنین، یک راهنما برای پسورد اصلی اضافه شده است تا به کاربران شرایط پسورد را یادآوری کند. فیلد تأیید پسورد نیز اعتبارسنجی می‌شود تا مطمئن شود که هر دو پسورد وارد شده یکسان هستند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #b50000;">نتیجه‌گیری</span></strong></h2>
<p>طراحی بخش نمایش پسورد در فلاتر یکی از ویژگی‌های مهم برای بهبود تجربه کاربری و افزایش امنیت است. با استفاده از ویجت‌های <code>TextField</code> و <code>TextFormField</code>، می‌توانید به سادگی قابلیت نمایش و مخفی‌سازی پسورد را پیاده‌سازی کنید. همچنین، افزودن اعتبارسنجی و ویژگی‌های اضافی مانند راهنما و تأیید پسورد می‌تواند به بهبود تجربه کاربری کمک کند. امیدواریم این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%a8%d8%ae%d8%b4-%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%be%d8%b3%d9%88%d8%b1%d8%af-%d8%af%d8%b1-%d9%81%d9%84%d8%a7%d8%aa%d8%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>حذف شمارنده text field در فلاتر</title>
		<link>https://programmingshow.ir/delete-textfield-counter-in-flutter/</link>
					<comments>https://programmingshow.ir/delete-textfield-counter-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Mon, 05 Aug 2024 06:30:26 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2821</guid>

					<description><![CDATA[TextField یکی از مهم‌ترین ویجت‌ها برای دریافت ورودی از کاربر در فلاتر است. این ویجت می‌تواند با توجه به نیازهای مختلف، پیکربندی شود.]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> یک فریم‌ورک محبوب برای توسعه اپلیکیشن‌های موبایل است که به توسعه‌دهندگان این امکان را می‌دهد تا اپلیکیشن‌های زیبا و کارآمد برای اندروید و iOS بسازند. یکی از ویجت‌های پرکاربرد در فلاتر، <code>TextField</code> است که برای دریافت ورودی از کاربر استفاده می‌شود. <code>TextField</code> دارای ویژگی‌های مختلفی است که یکی از آنها نمایش شمارنده کاراکترها است. در این مقاله، به بررسی روش‌های حذف شمارنده کاراکترها در <code>TextField</code> در فلاتر می‌پردازیم.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d60000;">آشنایی با TextField در فلاتر</span></strong></h2>
<p><a href="https://api.flutter.dev/flutter/material/TextField-class.html" target="_blank" rel="noopener"><code>TextField</code></a> یکی از مهم‌ترین ویجت‌ها برای دریافت ورودی از کاربر در فلاتر است. این ویجت می‌تواند با توجه به نیازهای مختلف، پیکربندی شود. برخی از ویژگی‌های مهم <code>TextField</code> عبارتند از:</p>
<ul>
<li>کنترل‌گر (Controller)</li>
<li>نوع ورودی (Input Type)</li>
<li>دکوراسیون (Decoration)</li>
<li>محدودیت کاراکتر (Character Limit)</li>
<li>شمارنده کاراکتر (Character Counter)</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d60000;">نمایش شمارنده کاراکترها در TextField</span></strong></h2>
<p>به صورت پیش‌فرض، زمانی که محدودیت کاراکتر برای <code>TextField</code> تعیین می‌شود، شمارنده کاراکترها در پایین <code>TextField</code> نمایش داده می‌شود. این شمارنده نشان می‌دهد که کاربر چند کاراکتر از تعداد مجاز را وارد کرده است. برای مثال، اگر محدودیت کاراکتر برای <code>TextField</code> 50 کاراکتر باشد، شمارنده به صورت <code>0/50</code> نمایش داده می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d60000;">حذف شمارنده کاراکترها</span></strong></h2>
<p>در برخی موارد، ممکن است شما نخواهید شمارنده کاراکترها در <code>TextField</code> نمایش داده شود. برای حذف شمارنده کاراکترها، می‌توانید از ویژگی‌های دکوراسیون <code>TextField</code> استفاده کنید. در اینجا چند روش برای حذف شمارنده کاراکترها آورده شده است.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span style="color: #d60000;"><strong>روش اول: استفاده از <code>InputDecoration</code> و <code>counterText</code></strong></span></h3>
<p>یکی از ساده‌ترین روش‌ها برای حذف شمارنده کاراکترها، استفاده از ویژگی <a href="https://api.flutter.dev/flutter/material/InputDecoration/counterText.html" target="_blank" rel="noopener"><code>counterText</code></a> در <a href="https://api.flutter.dev/flutter/material/InputDecoration-class.html" target="_blank" rel="noopener"><code>InputDecoration</code></a> است. با تنظیم مقدار <code>counterText</code> به یک رشته خالی، می‌توانید شمارنده کاراکترها را مخفی کنید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2831" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11-1.png" alt="استفاده از InputDecoration و counterText" width="702" height="655" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11-1.png 702w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11-1-300x280.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-11-1-600x560.png 600w" sizes="(max-width: 702px) 100vw, 702px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>در این مثال، شمارنده کاراکترها با استفاده از ویژگی <code>counterText</code> مخفی شده است.</p>
<h4></h4>
<h4></h4>
<h3><strong><span style="color: #d60000;">روش دوم: استفاده از <code>TextEditingController</code> و <code>buildCounter</code></span></strong></h3>
<p>اگر می‌خواهید کنترل بیشتری بر روی شمارنده کاراکترها داشته باشید، می‌توانید از ویژگی <a href="https://api.flutter.dev/flutter/material/TextField/buildCounter.html" target="_blank" rel="noopener"><code>buildCounter</code></a> استفاده کنید. این ویژگی به شما اجازه می‌دهد که شمارنده کاراکترها را به صورت کامل سفارشی کنید یا آن را حذف کنید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2832 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1.png" alt="استفاده از TextEditingController و buildCounter" width="882" height="730" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1.png 882w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1-300x248.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1-768x636.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-12-1-600x497.png 600w" sizes="(max-width: 882px) 100vw, 882px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>در این مثال، با استفاده از <code>buildCounter</code> شمارنده کاراکترها حذف شده است.</p>
<h3></h3>
<h3></h3>
<h2><strong><span style="color: #d60000;">چرا باید شمارنده کاراکترها را حذف کنیم؟</span></strong></h2>
<p>حذف شمارنده کاراکترها می‌تواند در برخی موارد مفید باشد:</p>
<ul>
<li><strong>ساده‌سازی رابط کاربری:</strong> در برخی موارد، نمایش شمارنده کاراکترها ممکن است باعث شلوغی رابط کاربری شود. حذف آن می‌تواند ظاهر ساده‌تر و مرتب‌تری به رابط کاربری بدهد.</li>
<li><strong>تجربه کاربری بهتر:</strong> اگر کاربر به ندرت به محدودیت کاراکترها برخورد می‌کند، نمایش شمارنده ممکن است غیرضروری باشد و حذف آن تجربه کاربری بهتری فراهم کند.</li>
<li><strong>طراحی سفارشی:</strong> در طراحی‌های خاص، ممکن است نیاز داشته باشید که شمارنده کاراکترها را به صورت سفارشی نمایش دهید یا کاملاً حذف کنید.</li>
</ul>
<h3></h3>
<h3></h3>
<h2><strong><span style="color: #d60000;">نحوه برخورد با محدودیت کاراکترها بدون شمارنده</span></strong></h2>
<p>حتی اگر شمارنده کاراکترها را حذف کنید، ممکن است هنوز بخواهید به کاربر اطلاع دهید که محدودیت کاراکترها وجود دارد. برای این منظور، می‌توانید از روش‌های دیگری استفاده کنید:</p>
<h3></h3>
<h3><strong><span style="color: #d60000;">نمایش پیام هشدار در هنگام رسیدن به محدودیت</span></strong></h3>
<p>می‌توانید با استفاده از <code>TextEditingController</code> و لیسنرهای آن، در صورتی که کاربر به محدودیت کاراکترها نزدیک شود، پیام هشدار نمایش دهید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2833" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1.png" alt="نمایش پیام هشدار در هنگام رسیدن به محدودیت" width="874" height="1325" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1.png 874w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1-198x300.png 198w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1-675x1024.png 675w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1-768x1164.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-13-1-600x910.png 600w" sizes="(max-width: 874px) 100vw, 874px" /></p>
<p>&nbsp;</p>
<h3></h3>
<h2><strong><span style="color: #d60000;">نمایش شمارنده سفارشی</span></strong></h2>
<p>اگر می‌خواهید شمارنده کاراکترها را به صورت سفارشی نمایش دهید، می‌توانید از روش‌های مختلفی استفاده کنید. برای مثال، می‌توانید شمارنده کاراکترها را در بالا یا کنار <code>TextField</code> نمایش دهید.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2834" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1.png" alt="نمایش شمارنده سفارشی" width="902" height="1195" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1.png 902w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1-226x300.png 226w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1-773x1024.png 773w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1-768x1017.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-14-1-600x795.png 600w" sizes="(max-width: 902px) 100vw, 902px" /></p>
<p>&nbsp;</p>
<p>در این مثال، شمارنده کاراکترها به صورت سفارشی در زیر <code>TextField</code> نمایش داده می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d60000;">نتیجه‌گیری</span></strong></h2>
<p>حذف شمارنده کاراکترها در <code>TextField</code> در فلاتر یکی از قابلیت‌های مهمی است که می‌تواند به بهبود تجربه کاربری و سادگی رابط کاربری کمک کند. با استفاده از ویژگی‌های مختلف <code>TextField</code> و <code>InputDecoration</code>، می‌توانید شمارنده کاراکترها را حذف یا به صورت سفارشی نمایش دهید. امیدواریم این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/delete-textfield-counter-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>بستن دیالوگ در فلاتر</title>
		<link>https://programmingshow.ir/close-dialog-in-flutter/</link>
					<comments>https://programmingshow.ir/close-dialog-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sat, 03 Aug 2024 06:30:00 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2817</guid>

					<description><![CDATA[دیالوگ‌ها در فلاتر انواع مختلفی دارند، از جمله AlertDialog، SimpleDialog و دیالوگ‌های سفارشی. هر کدام از این دیالوگ‌ها می‌توانند با توجه به نیازهای خاص اپلیکیشن شما مورد استفاده قرار گیرند.]]></description>
										<content:encoded><![CDATA[<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> یکی از محبوب‌ترین فریم‌ورک‌ها برای توسعه اپلیکیشن‌های موبایل است که به توسعه‌دهندگان امکان می‌دهد تا اپلیکیشن‌های زیبا و کارآمد برای اندروید و iOS بسازند. یکی از اجزای کلیدی در طراحی رابط کاربری در فلاتر، استفاده از دیالوگ‌ها (Dialogs) است. دیالوگ‌ها برای نمایش پیام‌ها، هشدارها و دریافت ورودی از کاربران به کار می‌روند. در این مقاله به بررسی نحوه بستن دیالوگ‌ها در فلاتر می‌پردازیم و روش‌های مختلف بستن دیالوگ را توضیح می‌دهیم.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #ad0000;">دیالوگ‌ها در فلاتر</span></strong></h2>
<p>دیالوگ‌ها در فلاتر انواع مختلفی دارند، از جمله <a href="https://api.flutter.dev/flutter/material/AlertDialog-class.html" target="_blank" rel="noopener"><code>AlertDialog</code></a>، <a href="https://api.flutter.dev/flutter/material/SimpleDialog-class.html" target="_blank" rel="noopener"><code>SimpleDialog</code></a> و دیالوگ‌های سفارشی. هر کدام از این دیالوگ‌ها می‌توانند با توجه به نیازهای خاص اپلیکیشن شما مورد استفاده قرار گیرند. یکی از مهم‌ترین وظایف در استفاده از دیالوگ‌ها، بستن آنها به صورت صحیح است تا تجربه کاربری مناسبی فراهم شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #ad0000;">بستن دیالوگ‌ها با استفاده از Navigator.pop</span></strong></h2>
<p>در فلاتر، دیالوگ‌ها معمولاً با استفاده از تابع <a href="https://api.flutter.dev/flutter/material/showDialog.html" target="_blank" rel="noopener"><code>showDialog</code></a> نمایش داده می‌شوند و با استفاده از <code>Navigator.pop</code> بسته می‌شوند. این تابع به سادگی دیالوگ را از صفحه خارج می‌کند و به صفحه قبلی بازمی‌گردد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #ad0000;">مثال: بستن AlertDialog</span></strong></h3>
<p>در این مثال یک <code>AlertDialog</code> ایجاد می‌کنیم و با فشردن دکمه، آن را می‌بندیم.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2822" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-1.png" alt="بستن AlertDialog" width="748" height="860" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-1.png 748w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-1-261x300.png 261w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-8-1-600x690.png 600w" sizes="(max-width: 748px) 100vw, 748px" /></p>
<p>&nbsp;</p>
<p>در این کد، یک <code>AlertDialog</code> با یک دکمه ایجاد شده است که با فشردن آن، دیالوگ بسته می‌شود.</p>
<h3></h3>
<p>&nbsp;</p>
<h2><strong><span style="color: #ad0000;">بستن دیالوگ‌ها با استفاده از کلیدهای پیش‌فرض</span></strong></h2>
<p>فلاتر به شما امکان می‌دهد تا دیالوگ‌ها را با استفاده از کلیدهای پیش‌فرض نیز ببندید. به عنوان مثال، دکمه برگشت (Back) در دستگاه‌های اندروید می‌تواند برای بستن دیالوگ‌ها استفاده شود. این ویژگی به طور خودکار توسط فلاتر مدیریت می‌شود و نیازی به کدنویسی اضافی نیست.</p>
<h3></h3>
<p>&nbsp;</p>
<h2><strong><span style="color: #ad0000;">بازگشت داده از دیالوگ‌ها</span></strong></h2>
<p>یکی از کاربردهای مهم دیالوگ‌ها در فلاتر، بازگرداندن داده‌ها به صفحه اصلی است. این کار با استفاده از <a href="https://docs.flutter.dev/cookbook/navigation/navigation-basics" target="_blank" rel="noopener"><code>Navigator.pop</code></a> و ارسال داده‌ها به صورت آرگومان انجام می‌شود.</p>
<h4></h4>
<p>&nbsp;</p>
<h3><strong><span style="color: #ad0000;">مثال: بازگشت داده از دیالوگ</span></strong></h3>
<p>در این مثال، داده‌ای از دیالوگ به صفحه اصلی بازگردانده می‌شود.</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2823" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1.png" alt=" بازگشت داده از دیالوگ" width="812" height="1325" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1.png 812w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1-184x300.png 184w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1-628x1024.png 628w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1-768x1253.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-9-1-600x979.png 600w" sizes="(max-width: 812px) 100vw, 812px" /></p>
<p>&nbsp;</p>
<p>در این مثال، دیالوگ با دو دکمه &#8220;Yes&#8221; و &#8220;No&#8221; ایجاد شده است. پس از فشردن هر دکمه، نتیجه به صفحه اصلی بازگردانده می‌شود و در صفحه نمایش داده می‌شود.</p>
<h3></h3>
<p>&nbsp;</p>
<h2><strong><span style="color: #ad0000;">بستن دیالوگ‌های سفارشی</span></strong></h2>
<p>گاهی اوقات نیاز است دیالوگ‌های سفارشی ایجاد کنید که محتوای پیچیده‌تری دارند. برای بستن این دیالوگ‌ها نیز می‌توانید از <code>Navigator.pop</code> استفاده کنید.</p>
<h4></h4>
<p>&nbsp;</p>
<h3><strong><span style="color: #ad0000;">مثال: بستن دیالوگ سفارشی</span></strong></h3>
<p>در این مثال، یک دیالوگ سفارشی با محتوای پیچیده‌تر ایجاد شده است.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2824 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1.png" alt="بستن دیالوگ سفارشی" width="886" height="1456" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1.png 886w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1-183x300.png 183w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1-623x1024.png 623w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1-768x1262.png 768w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-10-1-600x986.png 600w" sizes="(max-width: 886px) 100vw, 886px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #ad0000;">نکات پیشرفته برای بستن دیالوگ‌ها</span></strong></h3>
<ol>
<li><strong>مدیریت حالت‌ها:</strong> استفاده از مدیریت حالت (State Management) برای کنترل وضعیت دیالوگ‌ها می‌تواند تجربه کاربری بهتری فراهم کند.</li>
<li><strong>استفاده از انیمیشن‌ها:</strong> افزودن انیمیشن‌ها به فرآیند باز و بسته شدن دیالوگ‌ها می‌تواند جلوه‌های بصری جذابی ایجاد کند.</li>
<li><strong>واکنش‌گرایی:</strong> اطمینان حاصل کنید که دیالوگ‌های شما در دستگاه‌های مختلف به خوبی نمایش داده می‌شوند.</li>
<li><strong>بازگشت داده‌های پیچیده:</strong> در صورت نیاز به بازگشت داده‌های پیچیده از دیالوگ‌ها، از ساختارهای داده مناسب مانند Map یا List استفاده کنید.</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #ad0000;">جمع‌بندی</span></strong></h3>
<p>بستن دیالوگ‌ها در فلاتر یکی از وظایف اساسی در مدیریت رابط کاربری است. با استفاده از <code>Navigator.pop</code> می‌توانید به سادگی دیالوگ‌ها را ببندید و داده‌ها را به صفحه اصلی بازگردانید. این مقاله به بررسی روش‌های مختلف بستن دیالوگ‌ها و نکات پیشرفته برای بهبود تجربه کاربری پرداخته است. امید است این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/close-dialog-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>سفارشی سازی دیالوگ ها در فلاتر</title>
		<link>https://programmingshow.ir/dialog-design-customization-in-flutter/</link>
					<comments>https://programmingshow.ir/dialog-design-customization-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 13:38:53 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2807</guid>

					<description><![CDATA[Dialogها بخش مهمی از تجربه کاربری هستند. آنها به شما اجازه می‌دهند تا اطلاعات مهم را به کاربر ارائه دهید، ورودی‌های کاربر را دریافت کنید و تعاملات را مدیریت کنید. سفارشی‌سازی ظاهر و عملکرد Dialogها می‌تواند]]></description>
										<content:encoded><![CDATA[<h3></h3>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> یکی از فریم‌ورک‌های محبوب توسعه اپلیکیشن‌های موبایل است که به توسعه‌دهندگان امکان می‌دهد اپلیکیشن‌های زیبا و کارآمد برای اندروید و iOS بسازند. یکی از اجزای مهم در طراحی رابط کاربری، استفاده از <a href="https://api.flutter.dev/flutter/material/Dialog-class.html" target="_blank" rel="noopener">Dialogها</a> برای نمایش پیام‌ها، هشدارها و تعاملات با کاربر است. در این مقاله، به بررسی نحوه سفارشی‌سازی دیزاین Dialogها در فلاتر می‌پردازیم و تکنیک‌هایی برای بهبود ظاهر و عملکرد آنها ارائه می‌دهیم.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">اهمیت دیزاین Dialog در فلاتر</span></strong></h2>
<p>Dialogها بخش مهمی از تجربه کاربری هستند. آنها به شما اجازه می‌دهند تا اطلاعات مهم را به کاربر ارائه دهید، ورودی‌های کاربر را دریافت کنید و تعاملات را مدیریت کنید. سفارشی‌سازی ظاهر و عملکرد Dialogها می‌تواند تجربه کاربری بهتری را فراهم کند و اپلیکیشن شما را حرفه‌ای‌تر نشان دهد.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">انواع Dialog در فلاتر</span></strong></h2>
<p>فلاتر ابزارهای متنوعی برای ایجاد و سفارشی‌سازی Dialogها فراهم کرده است که شامل AlertDialog، SimpleDialog و Dialog سفارشی می‌باشد. در ادامه به نحوه سفارشی‌سازی هر یک از این انواع Dialogها می‌پردازیم.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">1. سفارشی‌سازی AlertDialog</span></strong></h2>
<p><a href="https://api.flutter.dev/flutter/material/AlertDialog-class.html" target="_blank" rel="noopener">AlertDialog</a> یکی از رایج‌ترین انواع Dialogها است که برای نمایش پیام‌های هشدار و درخواست تأیید از کاربر استفاده می‌شود. با استفاده از ویژگی‌های مختلف فلاتر می‌توانیم ظاهر AlertDialog را سفارشی‌سازی کنیم.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">مرحله 1: ساختار پایه AlertDialog</span></strong></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2808" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2.png" alt="ساختار پایه AlertDialog" width="656" height="618" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2.png 656w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-300x283.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-2-600x565.png 600w" sizes="(max-width: 656px) 100vw, 656px" /></p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">مرحله 2: سفارشی‌سازی ظاهر AlertDialog</span></strong></h3>
<p>برای سفارشی‌سازی ظاهر AlertDialog می‌توانیم از ویژگی‌های مختلف استفاده کنیم:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2809" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3-1.png" alt="سفارشی‌سازی ظاهر AlertDialog" width="718" height="972" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3-1.png 718w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3-1-222x300.png 222w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-3-1-600x812.png 600w" sizes="(max-width: 718px) 100vw, 718px" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">2. سفارشی‌سازی SimpleDialog</span></strong></h2>
<p><a href="https://api.flutter.dev/flutter/material/SimpleDialog-class.html" target="_blank" rel="noopener">SimpleDialog</a> یک نوع دیگر از Dialog است که معمولاً برای نمایش یک لیست از گزینه‌ها به کاربر استفاده می‌شود. هر گزینه می‌تواند یک عمل خاص را اجرا کند.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">مرحله 1: ساختار پایه SimpleDialog</span></strong></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2810" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4-1.png" alt="ساختار پایه SimpleDialog" width="630" height="599" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4-1.png 630w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4-1-300x285.png 300w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-4-1-600x570.png 600w" sizes="(max-width: 630px) 100vw, 630px" /></p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">مرحله 2: سفارشی‌سازی ظاهر SimpleDialog</span></strong></h3>
<p>برای سفارشی‌سازی SimpleDialog می‌توانیم از ویژگی‌های مختلف استفاده کنیم:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2811" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5-2.png" alt="سفارشی‌سازی ظاهر SimpleDialog" width="736" height="897" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5-2.png 736w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5-2-246x300.png 246w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-5-2-600x731.png 600w" sizes="(max-width: 736px) 100vw, 736px" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">3. ساخت Dialog سفارشی</span></strong></h2>
<p>گاهی اوقات نیاز است تا Dialogهای سفارشی با محتوای پیچیده‌تر ایجاد شود. برای این منظور می‌توان از ویجت Dialog استفاده کرده و محتوای سفارشی خود را داخل آن قرار داد.</p>
<p>&nbsp;</p>
<h3><span style="color: #c70000;"><strong>مرحله 1: ساختار پایه Dialog سفارشی</strong></span></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2812" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1.png" alt="ساختار پایه Dialog سفارشی" width="674" height="785" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1.png 674w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-258x300.png 258w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-6-1-600x699.png 600w" sizes="(max-width: 674px) 100vw, 674px" /></p>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">مرحله 2: اضافه کردن عناصر بیشتر به Dialog سفارشی</span></strong></h3>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2813" src="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1.png" alt="اضافه کردن عناصر بیشتر به Dialog سفارشی" width="738" height="1083" srcset="https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1.png 738w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1-204x300.png 204w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1-698x1024.png 698w, https://programmingshow.ir/wp-content/uploads/2024/08/carbon-7-1-600x880.png 600w" sizes="(max-width: 738px) 100vw, 738px" /></p>
<p>&nbsp;</p>
<h2><strong><span style="color: #c70000;">نکات پیشرفته برای سفارشی‌سازی دیزاین Dialog</span></strong></h2>
<ol>
<li><strong>استفاده از انیمیشن‌ها:</strong> با استفاده از انیمیشن‌های فلاتر می‌توانید به Dialogهای خود جلوه‌های بصری جذابی اضافه کنید.</li>
<li><strong>واکنش‌گرایی:</strong> اطمینان حاصل کنید که Dialogهای شما در دستگاه‌های مختلف به خوبی نمایش داده می‌شوند.</li>
<li><strong>استفاده از تصاویر و آیکون‌ها:</strong> افزودن تصاویر و آیکون‌ها می‌تواند به Dialogهای شما جذابیت بیشتری بدهد.</li>
<li><strong>مدیریت حالت‌ها:</strong> با استفاده از مدیریت حالت (State Management) در فلاتر، می‌توانید وضعیت Dialogها را به خوبی کنترل کنید.</li>
</ol>
<p>&nbsp;</p>
<h3><strong><span style="color: #c70000;">جمع‌بندی</span></strong></h3>
<p>سفارشی‌سازی دیزاین Dialogها در فلاتر می‌تواند تجربه کاربری اپلیکیشن شما را بهبود بخشد. با استفاده از تکنیک‌های مختلف می‌توانید Dialogهای زیبا و کارآمدی را ایجاد کنید که کاربران شما را جذب کند. امید است این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/dialog-design-customization-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>نمایش dialog در فلاتر</title>
		<link>https://programmingshow.ir/dialog-in-flutter/</link>
					<comments>https://programmingshow.ir/dialog-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Tue, 30 Jul 2024 06:30:31 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2778</guid>

					<description><![CDATA[Dialog در فلاتر یک پنجره موقت است که روی صفحه اصلی اپلیکیشن نمایش داده می‌شود و می‌تواند برای نمایش اطلاعات یا درخواست ورودی از کاربر استفاده شود. فلاتر ابزارها و ویجت‌های متنوعی برای ایجاد Dialogها فراهم کرده است]]></description>
										<content:encoded><![CDATA[<pre></pre>
<h2><span style="color: #e30000;"><strong>Dialog در فلاتر: آموزش و اهمیت</strong></span></h2>
<h3></h3>
<p><a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> یک فریم‌ورک توسعه اپلیکیشن‌های موبایل است که توسط گوگل توسعه یافته و به توسعه‌دهندگان این امکان را می‌دهد تا اپلیکیشن‌های زیبا و عملکرد بالایی برای اندروید و iOS بسازند. یکی از اجزای مهم در طراحی رابط کاربری، استفاده از Dialogها برای نمایش پیام‌ها، هشدارها و تعاملات با کاربر است. در این مقاله، به بررسی نحوه استفاده از Dialog در فلاتر، انواع مختلف آن و کاربردهای عملی آن می‌پردازیم.</p>
<h3><strong><span style="color: #e30000;">Dialog در فلاتر</span></strong></h3>
<p><a href="https://api.flutter.dev/flutter/material/Dialog-class.html" target="_blank" rel="noopener">Dialog در فلاتر</a> یک پنجره موقت است که روی صفحه اصلی اپلیکیشن نمایش داده می‌شود و می‌تواند برای نمایش اطلاعات یا درخواست ورودی از کاربر استفاده شود. فلاتر ابزارها و ویجت‌های متنوعی برای ایجاد Dialogها فراهم کرده است که شامل AlertDialog، SimpleDialog و Dialog سفارشی می‌باشد.</p>
<p>&nbsp;</p>
<h2><span style="color: #e30000;"><strong>انواع Dialog در فلاتر</strong></span></h2>
<p>&nbsp;</p>
<h2><span style="color: #e30000;"><strong>AlertDialog</strong></span></h2>
<p><a href="https://api.flutter.dev/flutter/material/AlertDialog-class.html" target="_blank" rel="noopener">AlertDialog</a> یکی از رایج‌ترین انواع Dialogها است که برای نمایش پیام‌های هشدار و درخواست تأیید از کاربر استفاده می‌شود. این نوع Dialog معمولاً شامل عنوان، متن پیام و دکمه‌های تأیید و لغو است.</p>
<p><strong>مثال:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2788" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1.png" alt="AlertDialog" width="865" height="1213" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1.png 865w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1-214x300.png 214w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1-730x1024.png 730w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1-768x1077.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-6-1-1-600x841.png 600w" sizes="(max-width: 865px) 100vw, 865px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #e30000;">SimpleDialog</span></strong></h2>
<p><a href="https://api.flutter.dev/flutter/material/SimpleDialog-class.html" target="_blank" rel="noopener">SimpleDialog</a> یک نوع دیگر از Dialog است که معمولاً برای نمایش یک لیست از گزینه‌ها به کاربر استفاده می‌شود. هر گزینه می‌تواند یک عمل خاص را اجرا کند.</p>
<p><strong>مثال:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2790" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2.png" alt="SimpleDialog" width="781" height="1176" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2.png 781w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2-199x300.png 199w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2-680x1024.png 680w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2-768x1156.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-7-1-2-600x903.png 600w" sizes="(max-width: 781px) 100vw, 781px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #e30000;">Custom Dialog</span></strong></h2>
<p>گاهی اوقات نیاز است تا <a href="https://pub.dev/packages/flutter_custom_dialog" target="_blank" rel="noopener">Dialogهای سفارشی</a> با محتوای پیچیده‌تر ایجاد شود. برای این منظور می‌توان از ویجت Dialog استفاده کرده و محتوای سفارشی خود را داخل آن قرار داد.</p>
<p><strong>مثال:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2791" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1.png" alt="Custom Dialog" width="839" height="1381" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1.png 839w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1-182x300.png 182w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1-622x1024.png 622w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1-768x1264.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-8-1-1-600x988.png 600w" sizes="(max-width: 839px) 100vw, 839px" /></p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e30000;">کاربردهای عملی Dialog در اپلیکیشن‌های فلاتر</span></strong></h3>
<p>Dialog ها در اپلیکیشن‌های فلاتر می‌توانند کاربردهای متنوعی داشته باشند:</p>
<ul>
<li><strong>نمایش پیام‌های هشدار و خطا:</strong> با استفاده از AlertDialog می‌توانید پیام‌های هشدار یا خطا را به کاربر نمایش دهید.</li>
<li><strong>درخواست تأیید از کاربر:</strong> برای انجام عملیات‌های حساس مانند حذف یا خروج از حساب کاربری، می‌توانید از Dialogها برای درخواست تأیید استفاده کنید.</li>
<li><strong>نمایش فرم‌های ورودی:</strong> با استفاده از Dialogهای سفارشی می‌توانید فرم‌های ورودی مانند لاگین یا ثبت‌نام را به کاربر نمایش دهید.</li>
<li><strong>نمایش لیست گزینه‌ها:</strong> با استفاده از SimpleDialog می‌توانید لیستی از گزینه‌ها را به کاربر نمایش دهید تا یک گزینه را انتخاب کند.</li>
</ul>
<h3></h3>
<h3>جمع‌بندی</h3>
<p>Dialogها ابزارهای قدرتمندی برای تعامل با کاربر در اپلیکیشن‌های فلاتر هستند. با استفاده از انواع مختلف Dialogها می‌توانید تجربه کاربری بهتری را برای کاربران خود فراهم کنید. شرکت در دوره‌های آموزشی مانند &#8220;<strong><a href="https://programmingshow.ir/product/diamond-flutter/">دوره فلاتر الماس</a></strong>&#8221; با تدریس <a href="https://www.mehrabbozorgi.ir/" target="_blank" rel="noopener">مهراب بزرگی</a> می‌تواند به شما کمک کند تا دانش و مهارت خود را در زمینه استفاده از فلاتر و اجزای آن افزایش دهید. امیدواریم این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/dialog-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>تمرین های برنامه نویسی با checkbox در فلاتر</title>
		<link>https://programmingshow.ir/checkbox-in-flutter-2/</link>
					<comments>https://programmingshow.ir/checkbox-in-flutter-2/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sun, 28 Jul 2024 06:30:34 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2779</guid>

					<description><![CDATA[چک باکس‌ها به کاربران این امکان را می‌دهند که چندین گزینه را از میان لیستی از گزینه‌ها انتخاب کنند. این عنصر در فرم‌ها، تنظیمات و بسیاری از بخش‌های مختلف رابط کاربری کاربرد دارد.]]></description>
										<content:encoded><![CDATA[<h2></h2>
<h2><span style="color: #e30000;"><strong>تمرین 1: ایجاد یک Checkbox ساده</strong></span></h2>
<p><strong>هدف:</strong> ایجاد یک <a href="https://api.flutter.dev/flutter/material/Checkbox-class.html" target="_blank" rel="noopener">Checkbox</a> ساده و تغییر حالت آن.</p>
<p><strong>توضیح:</strong> یک اپلیکیشن <a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a> بسازید که شامل یک Checkbox ساده باشد. هنگام تغییر وضعیت Checkbox، متن نشان‌دهنده وضعیت آن (فعال یا غیرفعال) نمایش داده شود.</p>
<p><strong>کد:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2780" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2.png" alt="ایجاد یک Checkbox ساده" width="590" height="432" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2.png 590w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-300x220.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2781" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-1-1.png" alt=" ایجاد یک Checkbox ساده و تغییر حالت آن" width="869" height="822" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-1-1.png 869w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-1-1-300x284.png 300w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-1-1-768x726.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-1-1-600x568.png 600w" sizes="(max-width: 869px) 100vw, 869px" /></p>
<p>&nbsp;</p>
<h3></h3>
<h2><strong><span style="color: #e30000;">تمرین 2: Checkbox با لیست</span></strong></h2>
<p><strong>هدف:</strong> ایجاد یک لیست از آیتم‌ها که هرکدام دارای Checkbox هستند.</p>
<p><strong>توضیح:</strong> یک اپلیکیشن فلاتر بسازید که شامل یک لیست از آیتم‌ها باشد. هر آیتم دارای یک Checkbox است که می‌تواند فعال یا غیرفعال شود. وضعیت هر آیتم در یک لیست ذخیره شود.</p>
<p><strong>کد:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2782" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2.png" alt="Checkbox با لیست" width="874" height="1046" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2.png 874w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2-251x300.png 251w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2-856x1024.png 856w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2-768x919.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-2-1-2-600x718.png 600w" sizes="(max-width: 874px) 100vw, 874px" /></p>
<p>&nbsp;</p>
<h3></h3>
<h2><strong><span style="color: #e30000;">تمرین 3: گروهی از Checkbox‌ها با شمارش فعال‌ها</span></strong></h2>
<p><strong>هدف:</strong> ایجاد چند Checkbox و شمارش تعداد Checkbox‌های فعال.</p>
<p><strong>توضیح:</strong> یک اپلیکیشن فلاتر بسازید که شامل چند Checkbox باشد و تعداد Checkbox‌های فعال شده را نمایش دهد.</p>
<p><strong>کد:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2783 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1.png" alt="گروهی از Checkbox‌ها با شمارش فعال‌ه" width="933" height="1176" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1.png 933w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1-238x300.png 238w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1-812x1024.png 812w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1-768x968.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-3-1-1-1-600x756.png 600w" sizes="(max-width: 933px) 100vw, 933px" /></p>
<p>&nbsp;</p>
<h2></h2>
<h2><span style="color: #e30000;"><strong>تمرین 4: ذخیره‌سازی وضعیت Checkbox در SharedPreferences</strong></span></h2>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<p><strong>هدف:</strong> ذخیره‌سازی وضعیت Checkbox‌ها در <a href="https://pub.dev/packages/shared_preferences" target="_blank" rel="noopener">SharedPreferences</a> تا در بازگشایی مجدد اپلیکیشن، وضعیت آنها حفظ شود.</p>
<p><strong>توضیح:</strong> یک اپلیکیشن فلاتر بسازید که شامل چند Checkbox باشد و وضعیت آنها را در SharedPreferences ذخیره کند. در هنگام بازگشایی مجدد اپلیکیشن، وضعیت Checkbox‌ها بازیابی شود.</p>
<p><strong>کد:</strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2784" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2.png" alt="ذخیره‌سازی وضعیت Checkbox در SharedPreferences" width="1018" height="1492" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2.png 1018w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2-205x300.png 205w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2-699x1024.png 699w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2-768x1126.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-4-2-600x879.png 600w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #e30000;"><strong>تمرین 5: انتخاب همه Checkbox‌ها</strong></span></h2>
<p><strong>هدف:</strong> ایجاد یک دکمه برای انتخاب همه Checkbox‌ها و یک دکمه برای لغو انتخاب همه Checkbox‌ها.</p>
<p><strong>توضیح:</strong> یک اپلیکیشن فلاتر بسازید که شامل چند Checkbox و دو دکمه باشد. یک دکمه برای انتخاب همه Checkbox‌ها و یک دکمه برای لغو انتخاب همه Checkbox‌ها استفاده شود.</p>
<p><strong>کد:</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2785" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1.png" alt="انتخاب همه Checkbox‌ها" width="972" height="1604" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1.png 972w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1-182x300.png 182w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1-621x1024.png 621w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1-768x1267.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1-931x1536.png 931w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-5-1-1-600x990.png 600w" sizes="(max-width: 972px) 100vw, 972px" /></p>
<p>&nbsp;</p>
<h3>نتیجه‌گیری</h3>
<p>این تمرین‌ها به شما کمک می‌کند تا با مفاهیم مختلف استفاده از Checkbox در فلاتر آشنا شوید. این تمرین‌ها از ساده‌ترین حالت تا پیشرفته‌ترین موارد را پوشش می‌دهند و به شما امکان می‌دهند تا مهارت‌های خود را در این زمینه بهبود بخشید. با شرکت در دوره‌های آموزشی مانند &#8220;<a href="https://programmingshow.ir/product/diamond-flutter/"><strong>دوره فلاتر الماس</strong></a>&#8221; به تدریس مهراب بزرگی می‌توانید دانش خود را در زمینه فلاتر و برنامه‌نویسی ارتقاء دهید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/checkbox-in-flutter-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>احراز هویت (validation) در فلاتر</title>
		<link>https://programmingshow.ir/validation-in-flutter/</link>
					<comments>https://programmingshow.ir/validation-in-flutter/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Fri, 26 Jul 2024 06:30:24 +0000</pubDate>
				<category><![CDATA[آموزش مقدماتی ۲]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=2746</guid>

					<description><![CDATA[احراز هویت (Validation) یکی از مراحل حیاتی در توسعه اپلیکیشن‌ها است که اطمینان حاصل می‌کند داده‌های وارد شده توسط کاربر مطابق با الزامات مشخص شده باشد.]]></description>
										<content:encoded><![CDATA[<h3><span style="color: #e60000;"><strong>مقدمه</strong></span></h3>
<p><a href="https://docs.flutter.dev/cookbook/forms/validation" target="_blank" rel="noopener">احراز هویت (Validation)</a> یکی از مراحل حیاتی در توسعه اپلیکیشن‌ها است که اطمینان حاصل می‌کند داده‌های وارد شده توسط کاربر مطابق با الزامات مشخص شده باشد. در <a href="https://flutter.dev/" target="_blank" rel="noopener">فلاتر</a>، احراز هویت به وسیله ویجت‌ها و متدهای مختلفی انجام می‌شود که توسعه‌دهندگان را قادر می‌سازد تا داده‌های ورودی را بررسی و کنترل کنند. این مقاله به بررسی ویجت احراز هویت (Validation) در فلاتر، اهمیت و کاربردهای آن می‌پردازد. همچنین به نکات و بهترین روش‌ها برای استفاده از ویجت احراز هویت اشاره خواهیم کرد. شرکت در دوره‌های آموزشی مانند &#8220;<a href="https://programmingshow.ir/product/diamond-flutter/">دوره فلاتر الماس</a>&#8221; به تدریس <a href="https://www.mehrabbozorgi.ir/" target="_blank" rel="noopener">مهراب بزرگی</a> می‌تواند مهارت‌های شما را در زمینه احراز هویت در فلاتر بهبود بخشد.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e60000;">اهمیت احراز هویت در توسعه اپلیکیشن‌ها</span></strong></h3>
<p>احراز هویت به معنای بررسی و تأیید داده‌های وارد شده توسط کاربر است تا اطمینان حاصل شود که این داده‌ها مطابق با الزامات مشخص شده باشند. این مرحله در توسعه اپلیکیشن‌ها اهمیت زیادی دارد زیرا:</p>
<ul>
<li><strong>جلوگیری از ورود داده‌های نادرست</strong>: احراز هویت از ورود داده‌های نادرست و نامعتبر جلوگیری می‌کند.</li>
<li><strong>افزایش امنیت</strong>: احراز هویت به افزایش امنیت اپلیکیشن کمک می‌کند.</li>
<li><strong>بهبود تجربه کاربری</strong>: احراز هویت به بهبود تجربه کاربری کمک می‌کند زیرا کاربران را به وارد کردن داده‌های صحیح و معتبر هدایت می‌کند.</li>
</ul>
<h3></h3>
<h3><strong><span style="color: #e60000;">نحوه استفاده از ویجت احراز هویت در فلاتر</span></strong></h3>
<p>برای استفاده از ویجت احراز هویت در فلاتر، ابتدا باید یک پروژه جدید ایجاد کرده و سپس کدهای مورد نیاز را در فایل <code>lib/main.dart</code> اضافه کنید.</p>
<h4></h4>
<h4><strong><span style="color: #e60000;">1. ایجاد یک پروژه فلاتر جدید</span></strong></h4>
<p>ابتدا یک پروژه فلاتر جدید ایجاد کنید. برای این کار می‌توانید از دستور زیر در ترمینال استفاده کنید:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2748" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-12.png" alt="flutter create validation_example
" width="526" height="223" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-12.png 526w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-12-300x127.png 300w" sizes="(max-width: 526px) 100vw, 526px" /></p>
<p>&nbsp;</p>
<p>سپس پروژه را در ویرایشگر کد خود (مانند VSCode) باز کنید.</p>
<h4></h4>
<h4><span style="color: #e60000;"><strong>2. افزودن ویجت احراز هویت به پروژه</strong></span></h4>
<p>در فایل <code>lib/main.dart</code>، کد زیر را اضافه کنید تا یک فرم با احراز هویت ساده در برنامه خود داشته باشید:</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2749" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1.png" alt="افزودن ویجت احراز هویت به پروژه" width="868" height="1955" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1.png 868w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1-133x300.png 133w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1-455x1024.png 455w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1-768x1730.png 768w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1-682x1536.png 682w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-13-1-600x1351.png 600w" sizes="(max-width: 868px) 100vw, 868px" /></p>
<p>&nbsp;</p>
<h4></h4>
<h4><strong><span style="color: #e60000;">3. توضیح کد</span></strong></h4>
<ul>
<li><strong><code>MyApp</code></strong>: این کلاس یک ویجت بی‌حالت (StatelessWidget) است که یک نمونه از <code>ValidationExample</code> را درون <code>MaterialApp</code> برمی‌گرداند.</li>
<li><strong><code>ValidationExample</code></strong>: این کلاس یک ویجت با حالت (StatefulWidget) است که شامل یک فرم با احراز هویت ساده است.</li>
<li><strong><code>_ValidationExampleState</code></strong>: این کلاس وضعیت ویجت را مدیریت می‌کند و شامل کلید فرم و کنترلرهای متنی برای ایمیل و رمز عبور است.</li>
<li><strong><code>dispose</code></strong>: این متد برای آزاد کردن منابع کنترلرهای متنی هنگام از بین رفتن ویجت استفاده می‌شود.</li>
<li><strong><code>Form</code></strong>: این ویجت برای ایجاد فرم استفاده می‌شود و کلید فرم را دریافت می‌کند.</li>
<li><strong><code>TextFormField</code></strong>: این ویجت برای ورودی‌های متنی استفاده می‌شود و احراز هویت را با استفاده از ویژگی <code>validator</code> انجام می‌دهد.</li>
<li><strong><code>ElevatedButton</code></strong>: این دکمه برای ارسال فرم و نمایش پیغام در صورت معتبر بودن داده‌ها استفاده می‌شود.</li>
</ul>
<h3></h3>
<h3><strong><span style="color: #e60000;">ویژگی‌های ویجت احراز هویت در فلاتر</span></strong></h3>
<p>ویجت احراز هویت در فلاتر دارای ویژگی‌های متعددی است که به شما امکان می‌دهد تا به راحتی داده‌های ورودی را مدیریت کنید. برخی از این ویژگی‌ها عبارتند از:</p>
<ul>
<li><strong><code>validator</code></strong>: این ویژگی برای اعتبارسنجی داده‌های ورودی استفاده می‌شود و یک تابع را دریافت می‌کند که مقدار ورودی را بررسی می‌کند و در صورت نامعتبر بودن، یک پیغام خطا برمی‌گرداند.</li>
<li><a href="https://api.flutter.dev/flutter/widgets/FormField/autovalidateMode.html" target="_blank" rel="noopener"><strong><code>autovalidateMode</code></strong></a>: این ویژگی تعیین می‌کند که فرم به صورت خودکار اعتبارسنجی شود یا خیر.</li>
<li><a href="https://api.flutter.dev/flutter/widgets/FormField/onSaved.html" target="_blank" rel="noopener"><strong><code>onSaved</code></strong></a>: این ویژگی برای ذخیره‌سازی داده‌های معتبر استفاده می‌شود.</li>
</ul>
<h4></h4>
<h4><strong><span style="color: #e60000;">مثال‌های پیشرفته</span></strong></h4>
<p>در ادامه چند مثال پیشرفته‌تر از استفاده از ویجت احراز هویت را بررسی می‌کنیم.</p>
<h5></h5>
<h5><strong><span style="color: #e60000;">1. اعتبارسنجی چندگانه</span></strong></h5>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2750" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-14.png" alt=" اعتبارسنجی چندگانه" width="760" height="428" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-14.png 760w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-14-300x169.png 300w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-14-600x338.png 600w" sizes="(max-width: 760px) 100vw, 760px" /></p>
<h5></h5>
<h5><span style="color: #e60000;"><strong>2. استفاده از autovalidateMode</strong></span></h5>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2751" src="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-15.png" alt="استفاده از autovalidateMode" width="618" height="372" srcset="https://programmingshow.ir/wp-content/uploads/2024/07/carbon-15.png 618w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-15-300x181.png 300w, https://programmingshow.ir/wp-content/uploads/2024/07/carbon-15-600x361.png 600w" sizes="(max-width: 618px) 100vw, 618px" /></p>
<p>&nbsp;</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<h3></h3>
<h3><strong><span style="color: #e60000;">نکات مهم در استفاده از ویجت احراز هویت</span></strong></h3>
<ul>
<li><strong>استفاده بهینه از منابع</strong>: حتماً در متد <code>dispose</code>، منابع کنترلرهای متنی را آزاد کنید تا از نشت حافظه جلوگیری شود.</li>
<li><strong>پیاده‌سازی اعتبارسنجی مناسب</strong>: اطمینان حاصل کنید که اعتبارسنجی‌ها به درستی پیاده‌سازی شده‌اند و تمامی موارد ممکن را پوشش می‌دهند.</li>
<li><strong>ارائه پیام‌های خطای کاربرپسند</strong>: پیام‌های خطا باید واضح و کاربرپسند باشند تا کاربران به راحتی متوجه اشتباهات خود شوند.</li>
</ul>
<h3></h3>
<h3><strong><span style="color: #e60000;">کاربردهای ویجت احراز هویت در پروژه‌های واقعی</span></strong></h3>
<p>ویجت احراز هویت در پروژه‌های واقعی کاربردهای زیادی دارد، از جمله:</p>
<ul>
<li><strong>مدیریت فرم‌ها</strong>: می‌توانید از ویجت احراز هویت برای مدیریت و اعتبارسنجی ورودی‌های فرم‌ها استفاده کنید.</li>
<li><strong>ورود و ثبت‌نام کاربران</strong>: این ویجت برای ایجاد صفحات ورود و ثبت‌نام با اعتبارسنجی‌های لازم بسیار مفید است.</li>
<li><strong>پرداخت و خرید آنلاین</strong>: می‌توانید از ویجت احراز هویت برای اعتبارسنجی اطلاعات پرداخت و خرید آنلاین استفاده کنید.</li>
</ul>
<h3></h3>
<h3><strong><span style="color: #e60000;">نتیجه‌گیری</span></strong></h3>
<p>ویجت احراز هویت (Validation) یکی از ابزارهای قدرتمند و کارآمد برای مدیریت و اعتبارسنجی داده‌های ورودی در فلاتر است. با استفاده از این ویجت می‌توانید به راحتی داده‌های وارد شده توسط کاربر را بررسی و کنترل کنید و تجربه کاربری بهتری را به کاربران ارائه دهید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/validation-in-flutter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
