<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Hamidreza Ramezani</title>
        <link>https://virgool.io/feed/@codingwithham</link>
        <description>سلام.
حمیدرضا هستم ، علاقه مند به دنیای تکنولوژی ، برنامه نویس ، دونده و کمی هم کتابخون.
از این که منو دنبال میکنید ممنونم.</description>
        <language>fa</language>
        <pubDate>2026-06-16 16:45:57</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/67989/avatar/r88Ye9.jpg?height=120&amp;width=120</url>
            <title>Hamidreza Ramezani</title>
            <link>https://virgool.io/@codingwithham</link>
        </image>

                    <item>
                <title>پیاده سازی ساده ترین ویجت در کاتلین با کامپوز</title>
                <link>https://virgool.io/@codingwithham/%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AA%D8%B1%DB%8C%D9%86-%D9%88%DB%8C%D8%AC%D8%AA-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%D8%A8%D8%A7-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D8%B2-ys5vucs65zkc</link>
                <description>تو این پست سعی میکنیم به ویجت text در کاتلین کامپوز بپردازیم.راهنمای جامعی از نحوه کارکرد این ویجت و نحوه استایل دهی این ویجت خواهیم داشت.در Kotlin Jetpack Compose، ویجتها یا ترکیبها (Composables) اجزای سازندهای هستند که برای ساخت رابط کاربری استفاده میشوند. این ویجتها به صورت توابعی تعریف میشوند که میتوانند ورودیهای مختلفی را بپذیرند و یک نمایش یا بخشی از رابط کاربری را به صورت دلخواه تولید کنند.یک نمونه مثال از این ویجت Text مثلاً، فرض کنید میخواهیم یک ویجت ساده برای نمایش یک دکمه در Kotlin Jetpack Compose بسازیم. این ویجت یک عنصر UI است که با کلیک کاربر واکنش نشان میدهد.import androidx.compose.foundation.layout.Columnimport androidx.compose.material.Buttonimport androidx.compose.material.MaterialThemeimport androidx.compose.material.Textimport androidx.compose.runtime.Composableimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dp@Composablefun MyButtonWidget(: () -&gt; Unit) {    Button(         = ,        modifier = Modifier.align(Alignment.CenterHorizontally)    ) {        Text(text = &amp;quotClick me!&amp;quot)    }}@Preview@Composablefun PreviewButtonWidget() {    MaterialTheme {        Column(            modifier = Modifier.padding(16.dp),            horizontalAlignment = Alignment.CenterHorizontally,            verticalArrangement = Arrangement.Center        ) {            MyButtonWidget( = {})        }    }}MyButtonWidget: این تابع @Composable در Kotlin به عنوان یک ویجت تعریف شده است. این ویجت یک دکمه (Button) ایجاد میکند که با متن &quot;Click me!&quot; و با کلیک بر روی آن اجرا میشود. ویژگی onClick به عنوان ورودی دریافت میکند که یک عملکرد بینام (Lambda) است که هنگام کلیک دکمه فراخوانده میشود.PreviewButtonWidget: این تابع نیز به عنوان یک پیشنمایش برای MyButtonWidget تعریف شده است. این پیشنمایش از MaterialTheme استفاده میکند و یک ستون ایجاد میکند که ویجت MyButtonWidget را در آن نمایش میدهد.در این مثال، MyButtonWidget یک ویجت ساده است که یک دکمه را نمایش میدهد و میتواند به صورت ترکیبی در رابطهای کاربری پیچیدهتر استفاده شود. Kotlin Jetpack Compose با استفاده از توابع ترکیبسازی (@Composable)، امکان ساخت رابطهای کاربری دینامیک و قابل تغییر فراهم میآورد که از قدرت و انعطافپذیری بسیار بالایی برخوردار است.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Tue, 18 Jun 2024 14:01:16 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت AppBar در فلاتر</title>
                <link>https://virgool.io/@codingwithham/%D9%88%DB%8C%D8%AC%D8%AA-appbar-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-iiv6b474yzxk</link>
                <description>AppBar یک قطعه واسط کاربری است که در بالای صفحه نمایش داده می‌شود و به عنوان یک میزبان برای عناصر دیگری مانند عناصر منو یا دکمه‌ها استفاده می‌شود. در فریم‌ورک فلاتر، AppBar برای نمایش عناوین صفحه، دکمه‌های ناوبری و سایر ابزارهای کاربردی استفاده می‌شود. زیرا AppBar یک قطعه اساسی در طراحی رابط کاربری متوسط است.ویژگی‌های AppBar:title: عنوانی که در بخش مرکزی AppBar نمایش داده می‌شود.actions: لیستی از عناصری که در بخش سمت راست AppBar قرار می‌گیرند، مانند دکمه‌ها یا آیکون‌ها.leading: عنصری که در بخش سمت چپ AppBar قرار می‌گیرد، معمولاً برای اضافه کردن یک دکمه برگشت به عقب استفاده می‌شود.backgroundColor: رنگ پس‌زمینه AppBar.elevation: بلندی سایه‌دهی AppBar. این ویژگی برای تعیین ارتفاع سایه AppBar استفاده می‌شود.automaticallyImplyLeading: اگر true باشد، یک دکمه برگشت به عقب به صورت خودکار اضافه می‌شود، اگر صفحه قبلی موجود باشد.bottom: عناصری که در پایین AppBar قرار می‌گیرند، مانند تب‌ها یا منوی کشویی.تمام این ویژگی‌ها را می‌توانیم در ساخت یک AppBar سفارشی در فلاتر استفاده کنیم.مثال:import &#039;package:flutter/material.dart&#039;;void main() {  runApp(MyApp());}class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      home: Scaffold(        appBar: AppBar(          title: Text(&#039;Custom AppBar&#039;),          backgroundColor: Colors.blue,          elevation: 4, // افزایش ارتفاع سایه          actions: [            IconButton(              icon: Icon(Icons.search),              onPressed: () {              },            ),            IconButton(              icon: Icon(Icons.more_vert),              onPressed: () {              },            ),          ],        ),        body: Center(          child: Text(&#039;Custom AppBar Example&#039;),        ),      ),    );  }}در این مثال، یک AppBar سفارشی ایجاد شده است که شامل یک عنوان، یک پس‌زمینه رنگی، بلندی سایه، و دو دکمه عمل است.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Sat, 17 Feb 2024 13:06:37 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت Container در فلاتر: ویژگی‌ها و نمونه‌ها</title>
                <link>https://virgool.io/@codingwithham/%D9%88%DB%8C%D8%AC%D8%AA-container-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D9%88%DB%8C%DA%98%DA%AF%DB%8C-%D9%87%D8%A7-%D9%88-%D9%86%D9%85%D9%88%D9%86%D9%87-%D9%87%D8%A7-jvyzdgyx8udn</link>
                <description>در فلاتر، ویجت Container یک ویجت چندکاره است که به شما امکان می‌دهد ظاهر ویجت فرزند خود را سفارشی کنید یا یک طرح بصری ایجاد کنید. این ویجت از ویژگی‌های مختلف برای کنترل طرح، اندازه، تراز، پرشی، حاشیه، تزئینات و موارد دیگر پشتیبانی می‌کند. در زیر یک مروری بر برخی از ویژگی‌های معمولاً استفاده شده همراه با نمونه‌ها آورده شده است:child: ویجتی که در داخل کانتینر قرار می‌گیرد.Container(
 child: Text(&#039;Hello, World!&#039;),
)alignment: تراز ویجت فرزند داخل کانتینر.Container(
 alignment: Alignment.center,
 child: Text(&#039;Centered Text&#039;),
)Color: رنگ پس زمینه کانتینر.Container(
 color: Colors.blue,
 child: Text(&#039;Blue Container&#039;),
)width &amp; height: عرض و ارتفاع صریح کانتینر.Container(
 width: 200,
 height: 100,
 color: Colors.red,
 child: Text(&#039;200x100 Container&#039;),
)margin: فضای خالی بیرون از کانتینر.Container(
 margin: EdgeInsets.all(20.0),
 color: Colors.green,
 child: Text(&#039;Container with Margin&#039;),
)padding: فضای خالی درون کانتینر.Container(
 padding: EdgeInsets.all(20.0),
 color: Colors.yellow,
 child: Text(&#039;Container with Padding&#039;),
)decoration: تزئینی که بر روی کانتینر اعمال می‌شود.Container(
 decoration: BoxDecoration(
 color: Colors.orange,
 borderRadius: BorderRadius.circular(10.0),
  ),
 child: Text(&#039;Decorated Container&#039;),
)constraints: محدودیت‌های اضافی که برای اعمال به اندازه کانتینر استفاده می‌شود.Container(
 constraints: BoxConstraints.expand(height: 200),
 color: Colors.purple,
 child: Text(&#039;Container with Height Constraint&#039;),
)transform: ماتریس تبدیلی که بر روی کانتینر اعمال می‌شود.Container(
  transform: Matrix4.rotationZ(0.1),
  color: Colors.pink,
  child: Text(&#039;Container with Transformation&#039;),
)این فقط چند ویژگی از ویجت Container هستند. شما می‌توانید ویژگی‌های بیشتر و ترکیبات آن‌ها را در مستندات فلاتر برای ویجت Container بررسی کنید.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Wed, 14 Feb 2024 11:57:48 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای کامل ویجت Card در فلاتر: ایجاد کارت‌های زیبا با امکانات پیشرفته</title>
                <link>https://virgool.io/@codingwithham/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%84-%D9%88%DB%8C%D8%AC%D8%AA-card-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DA%A9%D8%A7%D8%B1%D8%AA-%D9%87%D8%A7%DB%8C-%D8%B2%DB%8C%D8%A8%D8%A7-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-jwxe90clxpdh</link>
                <description>ویجت Card در فریم‌ورک فلاتر به تو این امکان را می‌ده که سطوحی با سایه و گوشه‌های گرد را ایجاد کنی که برای نمایش اطلاعات در مطالب، لیست‌ها و سایر بخش‌های رابط کاربری مناسب هست. این ویجت از خصوصیات مختلفی برخوردار هست که به شما اجازه می‌ده ظاهر کارت را به دلخواه خود تغییر بدهید.۱. مشخص کردن ویجت فرزند (child)ویجت Card یک ویجت فرزند را می‌پذیرد که به عنوان محتوای کارت عمل می‌کند. مثال زیر نشان می‌دهد چگونه یک متن درون کارت قرار داده می‌شود:Card(  child: Text(&#039;This is a card&#039;),) ۲. تنظیم رنگ (color)با استفاده از خصوصیت color می‌توانید رنگ پس‌زمینه کارت را تغییر دهید. در این مثال، کارت رنگی را نمایش می‌دهد:Card(  color: Colors.blue,  child: Text(&#039;Colored Card&#039;),)۳. افزایش ارتفاع (elevation) یا در واقع میشه همون shadowخصوصیت elevation ارتفاع سایه کارت را کنترل می‌کند. مقادیر بزرگتر برای این خصوصیت سایه بیشتری ایجاد می‌کنند. در اینجا یک کارت با ارتفاع سایه بالا نشان داده شده است:Card(  elevation: 8,  child: Text(&#039;Elevated Card&#039;),)۴. شکل (shape)با استفاده از خصوصیت shape می‌توانید شکل گوشه‌های کارت را تغییر دهید. مثلا می‌توانید گوشه‌ها را گرد کنید:Card(  shape: RoundedRectangleBorder(    borderRadius: BorderRadius.circular(15.0),  ),  child: Text(&#039;Rounded Corners Card&#039;),)۵. حاشیه (margin)می‌توانید با استفاده از خصوصیت margin حاشیه کارت را تنظیم کنید:Card(  margin: EdgeInsets.all(16.0),  child: Text(&#039;Margin Card&#039;),)۶. کنترل پس‌زمینه حاشیه (borderOnForeground)با استفاده از خصوصیت borderOnForeground می‌توانید کنترل کنید که مرز کارت در پس‌زمینه قرار داده شود یا نه:Card(  borderOnForeground: false,  child: Text(&#039;Border Not on Foreground Card&#039;),)۷. رفتار برش (clipBehavior)خصوصیت clipBehavior تعیین می‌کند چگونه محتوا در داخل کارت برش داده شود. مقادیر ممکن شامل Clip.none، Clip.hardEdge و Clip.antiAlias می‌شود:Card(  clipBehavior: Clip.antiAlias,  child: Text(&#039;Anti-aliased Clip Card&#039;),)۸. حاوی نشانه‌گذاری (semanticContainer)اگر این خصوصیت true باشد، کارت به عنوان یک حاوی نشانه‌گذاری تعریف می‌شود، در غیر این صورت، نشانه‌گذاری کودکان داخلی و فرزندان این ویجت با نشانه‌گذاری نزدیک‌ترین حاوی نشانه‌گذاری محاصر شده‌اند که true است:Card(  semanticContainer: true,  child: Text(&#039;Semantic Container Card&#039;),)۹. رنگ سایه (shadowColor)رنگ سایه را می‌توان با استفاده از خصوصیت shadowColor تنظیم کرد:Card(  shadowColor: Colors.red,  child: Text(&#039;Shadow Color Card&#039;),)۱۰. شعاع گوشه‌ها (borderRadius)با استفاده از خصوصیت borderRadius می‌توانید شعاع گوشه‌های کارت را تنظیم کنید:Card(  shape: RoundedRectangleBorder(    borderRadius: BorderRadius.circular(30.0),  ),  child: Text(&#039;Custom Border Radius Card&#039;),)با استفاده از ویژگی‌های مختلف Card در فلاتر، می‌توانید کارت‌هایی با ظاهرهای مختلف و بهتری ایجاد کنید که با استانداردهای طراحی مواد Material Design هماهنگ هستند. این امکانات به شما اجازه می‌دهند تا رابط کاربری زیباتری ایجاد کنید که به راحتی قابل فهم و معقول باشد.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Tue, 13 Feb 2024 09:20:10 +0330</pubDate>
            </item>
                    <item>
                <title>ساختار ویجت Scaffold در فلاتر:</title>
                <link>https://virgool.io/@codingwithham/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D9%88%DB%8C%D8%AC%D8%AA-scaffold-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-rnb4ycd1s7fa</link>
                <description>مقدمهدر فلاتر، یک scaffold (سازه) یک ساختار ابتدایی است که یک چارچوب بصری برای یک برنامه با طراحی عناصر  فراهم می‌کند. معمولاً شامل عناصری مانند نوار برنامه (app bar)، بدنه (body) و دکمه شناور است. ویجت Scaffold فرآیند ایجاد چارچوب‌ها و ساختارهای متداول برنامه‌ها را ساده‌تر می‌کند. بیایید با برخی از ویژگی‌ها و نمونه‌های آن آشنا شویم:ویژگی‌های Scaffold در فلاتر:1. appBar:توضیحات: تعیین نوار برنامه در بالای صفحه اپلیکیشن.مثال:Scaffold(
 appBar: AppBar(
 title: Text(&#039;My App&#039;),
  ),
 // other properties...
)2. body:توضیحات: مشخص می‌کند محتوای اصلی ساختار.مثال:Scaffold(
  body: Center(
    child: Text(&#039;Hello, Flutter!&#039;),
  ),
  // other properties...
)3. floatingActionButton:توضیحات: یک دکمه شناور را تعیین می‌کند.مثال:Scaffold(
  floatingActionButton: FloatingActionButton(
    onPressed: () {
      // Add your onPressed logic here
    },
    child: Icon(Icons.add),
  ),
  // other properties...
)4. drawer:توضیحات: یک کشوی کناری برای ناوبری(Navigation) تعیین می‌کند.مثال:Scaffold(
 drawer: Drawer(
 child: ListView(
 children: &lt;Widget&gt;[
 ListTile(
 title: Text(&#039;Item 1&#039;),
 onTap: () {
 // Handle item 1 tap
          },
        ),
 // Other list items...
      ],
    ),
  ),
 // other properties...
)5. bottomNavigationBar:توضیحات: یک نوار ناوبری(Navigation) پایین را اضافه می‌کند.مثال:Scaffold(
  bottomNavigationBar: BottomNavigationBar(
    items: [
      BottomNavigationBarItem(
        icon: Icon(Icons.home),
        label: &#039;Home&#039;,
      ),
      // Other items...
    ],
  ),
  // other properties...
)6. backgroundColor:توضیحات: رنگ پس‌زمینه ساختار را تعیین می‌کند.مثال:Scaffold(
  backgroundColor: Colors.blue,
  // other properties...
)7. resizeToAvoidBottomInset:توضیحات: این ویژگی زمانی که کیبورد اندروید باز میشود تعیین میکند آیا صفحه اصلی اسکرول بخورد یا اینکه ثابت بماند.مثال:Scaffold(
  resizeToAvoidBottomInset: false,
 // other properties...
)تصویر تمام ویژگی ها در Scaffoldنتیجه‌گیری:ویجت Scaffold در فلاتر یک راه مناسب برای ساختاردهی چیدمان برنامه شما فراهم می‌کند. این ویژگی‌ها به شما امکان می‌دهند که جوانب مختلف ساختار را بر اساس نیازهای طراحی برنامه‌ی خود سفارشی‌سازی کنید. ترکیب این ویژگی‌ها به شما امکان می‌دهد تا یک رابط کاربری یکپارچه و کارآمد در یک برنامه فلاتر ایجاد کنید.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Sun, 04 Feb 2024 20:02:43 +0330</pubDate>
            </item>
                    <item>
                <title>اضافه کردن فونت در پروژه‌های فلاتر: رویکرد دستی و پیاده‌سازی مبتنی بر تم برای فونت‌های انگلیسی و فارسی</title>
                <link>https://virgool.io/@codingwithham/%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D9%88%D9%86%D8%AA-%D8%AF%D8%B1-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%B1%D9%88%DB%8C%DA%A9%D8%B1%D8%AF-%D8%AF%D8%B3%D8%AA%DB%8C-%D9%88-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-%D8%AA%D9%85-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D9%88%D9%86%D8%AA-%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-%D9%88-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-o3ptq84r9yco</link>
                <description>عکس پیش فرض فونت فمیلی فلاترمقدمهفونت‌ها نقش حیاتی در شکل‌دهی به هویت بصری اپلیکیشن‌های فلاتر ایفا می‌کنند. هدف این مقاله، راهنمایی برای توسعه‌دهندگان فلاتر است تا به صورت کارآمد FontFamily مختلف را به پروژه‌های خود اضافه کنند، از دو روش دستی و یک رویکرد مبتنی بر Theme استفاده کنند.1. ادغام دستی فونت   1.1 افزودن فونت‌ها به پروژه📁 کافی است فونت های خود را به صورت دستی به پروژه اضافه کنید و آنها را در دایرکتوری assets/fonts برای هر دو فونت انگلیسی و فارسی قرار دهید.نحوه اضافه کردن فونت در فایل YAML🔍 &quot;من یک مثال واقعی از پروژه‌ام اضافه کردم که در آن به این شکل یک فونت فارسی اضافه کردم.&quot;نمونه واقعی اضافه کردن فونت در YAML📂 &quot;من به این شیوه آن را به دایرکتوری &#x60;assets&#x60; اضافه کردم.&quot;نحوه دایرکتوری فونت ها در ASSET🌐 &quot;برای فونت انگلیسی، می‌توانید آن را به پروژه خود به همان روش اضافه کنید.&quot;1.2 استفاده از فونت در کد فلاتر🖋️ نمایش می‌دهد چگونه از خانواده فونت اضافه‌شده در کد فلاتر استفاده کنید.نحوه نمایش فونت فمیلی به صورت دستی در Text2. ادغام فونت مبتنی بر تم2.1 تعریف تم در main.dart🎨 در تصویر زیر نشان میدهیم که چگونه یک تم سفارشی را در فایل main.dart تعریف کنیم، شامل FontFamily.اضافه کردن فونت فمیلی در Theme اصلی برنامه2.2 اعمال تم در MaterialApp🎨 تصویر زیر چگونگی افزودن تم سفارشی را به تمام اپلیکیشن فلاتر نشان میدهد.افزودن تم به متریال اپ برای اعمال در تمام پروژهنتیجه‌گیری🔍 خلاصه‌ای از مزایای روش‌های دستی و مبتنی بر تم ادغام فونت، با تأکید بر اهمیت انتخاب رویکرد مناسب بر اساس نیازهای پروژه.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Sat, 03 Feb 2024 09:13:09 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با دستورات شرطی در زبان برنامه‌نویسی Dart: ارتقاء مهارت‌های شرط نویسی در توسعه اپلیکیشن‌ها</title>
                <link>https://virgool.io/@codingwithham/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D8%B4%D8%B1%D8%B7%DB%8C-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-dart-%D8%A7%D8%B1%D8%AA%D9%82%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D8%B1%D8%AA-%D9%87%D8%A7%DB%8C-%D8%B4%D8%B1%D8%B7-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%A7%D9%BE%D9%84%DB%8C%DA%A9%DB%8C%D8%B4%D9%86-%D9%87%D8%A7-ll0i6oitycbj</link>
                <description>میخوام خیلی ساده و خلاصه دستورات شرطی در زبان برنامه نویسی دارت رو توضیح بدهم. پیشاپیش ممنونم که در این مقاله همراه من هستی.مقدمهزبان برنامه‌نویسی Dart یک زبان متن باز و شیءگرا است که توسط گوگل برای توسعه اپلیکیشن‌ها و وب‌سایت‌ها استفاده می‌شود. در Dart، دستورات شرطی با استفاده از کلمه‌های کلیدی if، else if و else انجام می‌شوند. همچنین می‌توان از عملگرهای مقایسه‌ای نیز برای ارزیابی شرایط استفاده کرد.یک مثال ساده از دستورات شرطی در دارت رو ببینید : دستورات بالا رو در DartPad اجرا کردم ، همینطور که مشاهده میکنید خروجی متن عدد مثبت است را چاپ کرد.میخوام یکم جلو تر بریم ، دستور شرطی رو پیچیده تر کنیم .این دستورات ترکیبی از دستورات شرطی تو در تو هست که در تصویر زیر خروجی چاپ شده رو مشاهده میکنید.علاوه بر تمام این حالات ، میتونید از عملگر های مقایسه ایی هم استفاده کنید (حالا اینکه عملگر ها چی هستند ، باید وایسین تا عملگر ها رو هم توضیح بدم در جلسات بعدی )، اما یک نمونه ساده از این دستورات با عملگر ها رو براتون میزارم تا در آینده اگر خواستید استفاده کنید.و البته خروجی به شکل زیر است در اینجا، ابتدا if بررسی می‌کند که آیا x بزرگتر از y است یا خیر. اگر شرط درست باشد، بلوک دستورات داخل if اجرا می‌شود؛ در غیر این صورت، بلوک دستورات داخل else اجرا می‌شود.دستورات شرطی از اهمیت زیادی برای برنامه نویسی و کنترل جریان اجرای برنامه‌ها دارند و از آنها برای ایجاد تصمیمات مبتنی بر شرایط در برنامه‌ها استفاده می‌شود.امیدوارم این مقاله در روند یادگیری برنامه نویسی شما کمکی کرده باشه ✨ ، خوشحال میشم به صفحه 🔗 لینکدین من سری بزنید.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Tue, 16 Jan 2024 13:33:32 +0330</pubDate>
            </item>
                    <item>
                <title>دستورات ضروری فلاتر: راهنمای مدیریت پروژه، توسعه و debugging</title>
                <link>https://virgool.io/@codingwithham/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D8%B6%D8%B1%D9%88%D8%B1%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%88-%D8%A7%D8%B4%DA%A9%D8%A7%D9%84-%D8%B2%D8%AF%D8%A7%DB%8C%DB%8C-cp3xsphhqsgs</link>
                <description>در فلاتر، تعدادی دستور وجود دارد که توسعه‌دهندگان به طور معمول برای مدیریت پروژه، توسعه و debugging استفاده می‌کنند. در زیر چند دستور اصلی در فلاتر آورده شده‌اند:1. flutter create: یک پروژه جدید فلاتر ایجاد می‌کند. به عنوان مثال:flutter create my_flutter_app 2. flutter run: برنامه فلاتر را روی یک دستگاه متصل یا شبیه‌ساز اجرا می‌کند.flutter run3. flutter build: برنامه فلاتر را برای یک پلتفرم خاص می‌سازد. به عنوان مثال، برای ساخت یک APK:flutter build apk4. flutter doctor: وضعیت نصب فلاتر را بررسی کرده و پیشنهادات برای حل هرگونه مشکل ارائه می‌دهد.flutter doctor5. flutter pub get: dependency های موجود در فایل pubspec.yaml را دریافت می‌کند.flutter pub get6. flutter test: تست‌ها را در پروژه اجرا می‌کند.flutter test7. flutter analyze: کد Dart را برای مشکلات احتمالی بررسی می‌کند بدون اجرای برنامه.flutter analyze8. flutter format: کد Dart را در پروژه به ترتیب قوانین استایل فلاتر فرمت می‌کند.flutter format .9. flutter clean: دایرکتوری ساخته شده و سایر فایل‌های تولید شده را حذف می‌کند.flutter clean10. flutter packages upgrade: dependency ها در فایل pubspec.yaml را به آخرین نسخه ارتقا می‌دهد.flutter packages upgrade11. flutter build runner: ژنراتورهای کد را اجرا می‌کند که اغلب با پکیج‌هایی که نیاز به تولید کد دارند، استفاده می‌شود.flutter pub run build_runner build12. flutter packages get: مشابه flutter pub get است ولی یک دستور قدیمی است (منسوخ شده اما هنوز کار می‌کند).flutter packages getاین دستورات برای جوانب مختلف توسعه در فلاتر مورد نیاز هستند از جمله راه‌اندازی پروژه، مدیریت dependency ها ، build ، تست و نگهداری کد. توجه داشته باشید که فلاتر در حال توسعه است و دستورات جدید یا به‌روزرسانی‌هایی ممکن است در نسخه‌های بعدی معرفی شوند. همیشه به مستندات رسمی فلاتر مراجعه کنید تا اطلاعات به‌روزتری را دریافت کنید.ممنون میشم اگر محتوا را دوست داشتید به صفحه لینکدین من سر بزنید . </description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Mon, 15 Jan 2024 11:53:21 +0330</pubDate>
            </item>
                    <item>
                <title>ویجت‌های Row و Column در فلاتر: توضیح انعطاف‌پذیری چیدمان</title>
                <link>https://virgool.io/@codingwithham/%D9%88%DB%8C%D8%AC%D8%AA-%D9%87%D8%A7%DB%8C-row-%D9%88-column-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-%D8%A7%D9%86%D8%B9%D8%B7%D8%A7%D9%81-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C-%DA%86%DB%8C%D8%AF%D9%85%D8%A7%D9%86-fxyjw9ioqp76</link>
                <description>در فلاتر، ویجت‌های Row و Column به عنوان ابزارهای قدرتمندی برای طراحی رابط‌های کاربری انعطاف‌پذیر استفاده میشود. سعی داریم در این مقاله به نحوه استفاده از ویژگی‌های آن‌ها مانند mainAxisAlignment، crossAxisAlignment و سایر امکانات بپردازیم تا طرح‌های خوب سازمان‌دهی شده و جذاب در برنامه‌های فلاتر خود ایجاد کنید.Row در فلاتر:ویژگی‌های Row:mainAxisAlignment:ویژگی mainAxisAlignment تعیین می‌کند که چگونه فرزندان باید در امتداد محور اصلی (محور افقی در صورت Row) قرار گیرند. مقادیری مانند MainAxisAlignment.start، MainAxisAlignment.center و MainAxisAlignment.end را قبول می‌کند.2. crossAxisAlignment:ویژگی crossAxisAlignment تعیین می‌کند که چگونه فرزندان باید در امتداد محور عریض (محور عمودی در صورت Row) قرار گیرند. گزینه‌هایی مانند CrossAxisAlignment.start، CrossAxisAlignment.center و CrossAxisAlignment.end وجود دارد.Column در فلاتر:ویژگی‌های Column:mainAxisAlignment:به طور مشابه با Row، ویژگی mainAxisAlignment در Column تنظیم می‌کند که چگونه فرزندان باید در امتداد محور اصلی (محور عمودی در این حالت) قرار گیرند.2. crossAxisAlignment:ویژگی crossAxisAlignment در Column کنترل می‌کند که چگونه فرزندان باید در امتداد محور عریض (محور افقی در این حالت) قرار گیرند.ترکیب Row و Column:می‌توانید Row و Column را ترکیب کنید تا چیدمان مانند ماتریس ایجاد کنید، که به شما این امکان را می‌دهد که ویجت‌ها را به هر دو جهت افقی و عمودی قرار دهید.این ویژگی‌ها کنترل دقیق تر بر روی طرح‌بندی ویجت‌ها در Row و Column را فراهم می‌کنند، که به شما امکان می‌دهد طراحی‌های UI انعطاف‌پذیر و پاسخگو را در فلاتر ایجاد کنید.ممنون میشم اگر محتوا را دوست داشتید به صفحه لینکدین من سر بزنید .</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Sun, 14 Jan 2024 14:25:09 +0330</pubDate>
            </item>
                    <item>
                <title>&quot;راهنمای جامع Text Field در فریم‌ورک فلاتر&quot;</title>
                <link>https://virgool.io/@codingwithham/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%AC%D8%A7%D9%85%D8%B9-text-field-%D8%AF%D8%B1-%D9%81%D8%B1%DB%8C%D9%85-%D9%88%D8%B1%DA%A9-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-jyfwkhkmujqn</link>
                <description>مقدمه فلاتر یک فریم‌ورک متن باز و اپن‌سورس برای ساخت و توسعه اپلیکیشن‌های متنوع موبایل، وب و دسکتاپ است. یکی از عناصر مهم در توسعه اپلیکیشن‌های موبایل، وارد کردن متن از کاربر به وسیله ورودی‌های متنی است. Text Field یکی از ویجت‌های اساسی فلاتر برای این منظور است.1. Text Field چیست؟Text Field یک ویجت در فلاتر است که به کاربر اجازه می‌دهد متن را وارد کرده و آن را به برنامه ارسال کند. این ویجت از یک محیط ورودی متنی بهره می‌برد که کاربر می‌تواند متن را وارد کرده و به برنامه اطلاعات خود را منتقل کند.2. استفاده از Text Field:برای استفاده از Text Field در یک اپلیکیشن فلاتر، باید از کلاس TextField استفاده کرد. می‌توانید خصوصیات مختلفی را برای سفارشی‌سازی آن از جمله حداکثر طول، استایل، رنگ و ... تعیین کنید.3. خصوصیات Text Field:decoration: خصوصیتی که اطلاعات مربوط به ظاهر ویجت را تعیین می‌کند، مانند متن راهنما (hint text)، آیکون پیشوندی و ...maxLength: حداکثر تعداد کاراکترهایی که کاربر می‌تواند وارد کند.onChanged: یک تابع که هر زمان که مقدار Text Field تغییر کند فراخوانی می‌شود.4. اعتبارسنجی و ورودی‌های ویژه:می‌توانید با استفاده از ویژگی‌های اعتبارسنجی مانند validator و inputFormatters، ورودی‌های Text Field را محدود کنید و یا به شکل خاصی فرمت دهید.5. استفاده از Focus:Focus به شما این امکان را می‌دهد تا برنامه به صورت برنامه‌ریزی شده روی Text Field تمرکز کند و باعث افزایش تعامل با کاربر شود.Text Field در فریم‌ورک فلاتر دارای امکانات متنوعی است که به شما این امکان را می‌دهد تا ظاهر و عملکرد آن را به دقت کنترل کنید. در ادامه، امکانات اصلی Text Field به جزئیات کامل توضیح داده شده‌اند:1. Decoration: decoration یک خصوصیت اساسی است که از کلاس InputDecoration بهره می‌برد. این خصوصیت اطلاعاتی مانند متن راهنما (hint text)، آیکون پیشوندی، حاشیه (border)، رنگ و … را برای Text Field تعیین می‌کند.2. TextEditingController:شما می‌توانید از TextEditingController برای کنترل محتوای Text Field استفاده کنید. این ابزار به شما این امکان را می‌دهد که به دسترسی به محتوای فیلد متن داشته باشید و درخواست‌هایی مانند خواندن، نوشتن و پاک کردن محتوا را انجام دهید.3. maxLength و maxLines: maxLength تعیین می‌کند حداکثر تعداد کاراکترهایی که کاربر می‌تواند وارد کند، و maxLines تعیین می‌کند حداکثر تعداد خطوطی که متن می‌تواند داشته باشد.4. onChanged و onSubmitted: onChanged یک تابع است که هر زمان که مقدار Text Field تغییر کند فراخوانی می‌شود. همچنین، onSubmitted زمانی که کاربر Enter را بفشارد فراخوانی می‌شود.5. InputFormatters: inputFormatters به شما این امکان را می‌دهد که ورودی Text Field را به شکل خاصی فرمت دهید. برای مثال، می‌توانید از LengthLimitingTextInputFormatter برای محدود کردن تعداد کاراکترها استفاده کنید.6. Style:شما می‌توانید استایل متن، رنگ، اندازه و ... را با استفاده از خصوصیت style تنظیم کنید.7. FocusNode:استفاده از FocusNode به شما این امکان را می‌دهد که به صورت برنامه‌ریزی شده به فیلد متن تمرکز کنید و باعث افزایش تعامل با کاربر شود.8. اعتبارسنجی (Validation):شما می‌توانید از خصوصیت validator برای اعتبارسنجی ورودی Text Field استفاده کنید.با استفاده از این امکانات، شما می‌توانید Text Field را به شکل دقیق و سفارشی‌شده‌ای در اپلیکیشن‌های فلاتر خود استفاده کنید.ممنون میشم اگر محتوا را دوست داشتید به صفحه لینکدین من سر بزنید .</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Sat, 13 Jan 2024 12:31:17 +0330</pubDate>
            </item>
                    <item>
                <title>&quot;راهنمای کامل برای استفاده از ویجت متن در فلاتر&quot;</title>
                <link>https://virgool.io/@codingwithham/%D9%88%DB%8C%D8%AC%D8%AA-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%AF%D8%B1-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-text-enp1rjfljjmy</link>
                <description>ویجت Text یکی از ویجت‌های اساسی در فریمورک فلاتر (Flutter) است که برای نمایش متن در ویژوال کامپوننت‌ها مورد استفاده قرار می‌گیرد. این ویجت به شما امکان می‌دهد تا متن‌های مختلف را در صفحات و اپلیکیشن‌های خود نمایش دهید و به آن‌ها ویژگی‌های مختلفی از جمله فونت، اندازه، رنگ و ... را اعمال کنید.در زیر یک نمونه کد برای استفاده از ویجت Text در فلاتر آورده شده است:در این کد، یک اپلیکیشن ساده با یک صفحه اصلی (Scaffold) و یک نوار بالایی (AppBar) ایجاد شده است. در مرکز صفحه، ویجت Text قرار داده شده است که &quot;Hello, Flutter!&quot; را نمایش می‌دهد. ویژگی‌های مختلف متن مانند اندازه (fontSize)، وزن (fontWeight) و رنگ (color) با استفاده از ویژگی style تنظیم شده‌اند.برخی از ویژگی‌های مهم مربوط به ویجت Text در فلاتر عبارتند از: **text**: متنی که قرار است نمایش داده شود.**style**: ویژگی‌های مربوط به ظاهر متن از جمله اندازه، رنگ و وزن.**textAlign**: تنظیم موقعیت افقی متن (راست یا چپ یا وسط).**maxLines** و **overflow**: مدیریت تعداد خطوط و نمایش متن در صورت اتمام مکان مخصوص.و …شما می‌توانید با ترکیب این ویژگی‌ها و استفاده از ویجت Text، متن‌های متنوع و زیبا را در اپلیکیشن‌های خود نمایش دهید.ویژگی‌های مهم ویجت Text:textDirectionمشخص کردن جهت متن. مقادیر ممکن شامل TextDirection.ltr (چپ به راست) یا TextDirection.rtl (راست به چپ) می‌شوند.2. softWrapمشخص کردن اینکه متن به صورت خودکار به خطوط جدید برود یا خیر.3. overflowتعیین رفتار متن در صورت ناکافی بودن فضا برای نمایش کل متن. برخی از مقادیر ممکن شامل TextOverflow.ellipsis (نمایش نقطه‌های قطع) یا TextOverflow.fade (نمایش با گرادیان نرم) هستند.4. maxLinesتعیین تعداد حداکثر خطوط برای نمایش.5. textScaleFactorتنظیم فاکتور مقیاس‌دهی برای تغییر اندازه متن.استفاده از فونت‌های دلخواه:می‌توانید از فونت‌های دلخواه خود نیز استفاده کنید. برای این کار، فونت مورد نظر را به پروژه خود اضافه کرده و با استفاده از کلاس TextStyle آن را به ویجت Text اعمال کنید.جلوه‌های ویژه متن:شما می‌توانید با استفاده از RichText و TextSpan جلوه‌های ویژه متنی را اعمال کنید. این امکان به شما اجازه می‌دهد تا بخش‌های مختلف متن را با ویژگی‌های مختلفی نظیر رنگ یا استایل متفاوت کنید.نتیجه:ویجت Text در فلاتر یک ابزار قدرتمند است که به شما امکان می‌دهد تا متون مختلف را با انعطاف بیشتری در اپلیکیشن‌هایتان نمایش دهید. با استفاده از ویژگی‌ها و ترکیب‌های مختلف این ویجت، می‌توانید تنوع زیادی در نمایش متن‌ها ایجاد کنید.</description>
                <category>Hamidreza Ramezani</category>
                <author>Hamidreza Ramezani</author>
                <pubDate>Thu, 11 Jan 2024 21:35:21 +0330</pubDate>
            </item>
            </channel>
</rss>