آموزش فلاتر مقیاس‌پذیر: Supabase، معماری Clean و Riverpod - آخرین آپدیت

دانلود Scalable Flutter: Supabase, Clean Architecture & Riverpod

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: تسلط بر فلاتر حرفه‌ای: ساخت یک اپلیکیشن اجتماعی مقیاس‌پذیر با استفاده از معماری Clean، Supabase، Riverpod و ساختار Monorepo. معماری Clean کاربردی: یاد بگیرید چگونه با جداسازی کدها به لایه‌های Presentation، Domain و Data، ساختارهای اپلیکیشنی مستحکم، مقیاس‌پذیر و قابل تست طراحی کنید. فول‌استک با Supabase: پیاده‌سازی و یکپارچه‌سازی سیستم‌های احراز هویت، پایگاه داده، ذخیره‌سازی و قابلیت‌های Realtime با استفاده از Supabase بدون نیاز به نوشتن بک‌اندهای پیچیده. همگام‌سازی وضعیت با Riverpod و Event Bus: تسلط بر مدیریت وضعیت پیشرفته از طریق پیاده‌سازی معماری Event Bus برای حفظ یکپارچگی داده‌ها در صفحات مختلف. ساخت محیط Monorepo: تجربه توسعه حرفه‌ای با جداسازی قابلیت‌ها در بسته‌های (packages) قابل استفاده مجدد برای به حداکثر رساندن بهره‌وری کد. قابلیت‌های پیشرفته: پیاده‌سازی استانداردهای صنعتی مانند جستجوی واکنشی با Debounce، اسکرول نامحدود جهانی و سیستم‌های اعلان لحظه‌ای (Realtime). پیش نیازها: دانش پایه فلاتر: توانایی استفاده از ویجت‌های پایه و درک مفاهیم برنامه‌نویسی Asynchronous (async/await). مبانی Dart: آشنایی با مفاهیم پایه OOP مانند کلاس‌ها و ارث‌بری. آشنایی با مدیریت وضعیت: تجربه کار با هر یک از راهکارهای مدیریت وضعیت (Provider, Riverpod, Bloc, GetX و غیره) مفید است. حتی اگر با Riverpod آشنا نیستید، اصول پایه شما را پیش می‌برد. مبانی SQL CRUD: درک اولیه از خواندن و نوشتن داده‌ها توصیه می‌شود. کوئری‌های پیچیده و سیاست‌های RLS به صورت گام‌به‌گام در دوره آموزش داده می‌شوند. ذهنیت رشد: نیازی نیست متخصص باشید. اگر اراده یادگیری معماری مقیاس‌پذیر را دارید، آماده‌اید!

«از مبانی فلاتر فراتر بروید و به معماری تبدیل شوید که قادر به طراحی اپلیکیشن‌های حرفه‌ای و آماده برای محیط عملیاتی (Production) است.»

آیا آماده‌اید تا از اپلیکیشن‌های ساده‌ای مثل Counter یا TODO عبور کنید و با چالش‌های پیچیده سرویس‌های دنیای واقعی روبرو شوید؟ اگر تا به حال تجربه کرده‌اید که با افزودن قابلیت‌های جدید، کدهای شما در هم گره بخورند یا با هر تغییر کوچک، پایداری اپلیکیشن به خطر بیفتد، این دوره برای شما طراحی شده است.

این دوره فراتر از یک آموزش ساده برای ساخت اپلیکیشن است؛ این یک غوطه‌وری عمیق در متدولوژی‌های اثبات‌شده توسعه برای ایجاد اپلیکیشن‌های مقیاس‌پذیر و قابل نگهداری است که در طول زمان کارآمد باقی می‌مانند.

چرا این دوره در عصر هوش مصنوعی اهمیت دارد؟

در عصری که AI می‌تواند قطعه کدهای کوچک را در چند ثانیه تولید کند، نقش یک توسعه‌دهنده حرفه‌ای چیست؟

  • فراتر از قطعه کدها: هوش مصنوعی در نوشتن توابع عالی است، اما هنوز نمی‌تواند یک سیستم پیچیده و به هم پیوسته را طراحی کند. درک معماری Clean به این معناست که شما می‌دانید چگونه آن قطعات تولید شده توسط AI را در یک کل مقیاس‌پذیر سازماندهی کنید.

  • مزیت معمار: همانطور که AI سد ورود به دنیای کدنویسی را پایین می‌آورد، بازار با «کدهای تکه‌تکه» پر خواهد شد. ارزش واقعی در معمار خواهد بود؛ کسی که می‌تواند بدهی فنی (Technical Debt) را مدیریت کند، قابلیت نگهداری را تضمین کند و یک «ظرف» مستحکم (معماری) برای نگه داشتن منطق برنامه طراحی کند.

  • آینده‌سازی مسیر شغلی: این دوره شما را از یک «کدنویس» که دستورات را دنبال می‌کند، به یک «معمار» تبدیل می‌کند که AI را به عنوان ابزاری به خدمت می‌گیرد، به جای اینکه جایگزین شود.

سه ستون اصلی این دوره

ما یک اپلیکیشن «تخته گفتگوهای اجتماعی» (Community Board) با کارایی بالا را از صفر خواهیم ساخت که بر سه ستون فنی ضروری برای پروژه‌های بزرگ استوار است:

  1. معماری مستحکم (Clean Architecture): نظم بخشیدن به کدهای آشفته. یاد بگیرید چگونه مسئولیت‌ها را در لایه‌های مجزا تقسیم کنید و ساختاری ایجاد کنید که تست، نگهداری و تکامل آن آسان باشد.

  2. بک‌اند مدرن (Supabase): عبور از تنظیمات پیچیده سرور. بهره‌گیری از Supabase (یک سرویس Backend-as-a-Service قدرتمند) برای پیاده‌سازی پایگاه داده، احراز هویت و قابلیت‌های Realtime در کمترین زمان ممکن.

  3. مدیریت وضعیت بهینه (Riverpod و Event Bus): تسلط بر Riverpod، استاندارد صنعت برای فلاتر، و ترکیب آن با معماری Global Event Bus برای همگام‌سازی داده‌ها در صفحات مختلف با ظرافت و دقت.

ویژگی‌های کلیدی یادگیری

  • ساخت یک اپلیکیشن اجتماعی واقعی: پیاده‌سازی قابلیت‌های استاندارد صنعتی شامل احراز هویت، عملیات CRUD پست‌ها، لایک/کامنت لحظه‌ای، مدیریت پروفایل و جستجوی واکنشی.

  • راه‌اندازی حرفه‌ای Monorepo: یاد بگیرید چگونه قابلیت‌ها را به بسته‌های مستقل تقسیم کنید تا قابلیت استفاده مجدد از کد به حداکثر برسد و پروژه‌های بزرگ را مانند یک حرفه‌ای مدیریت کنید.

  • استریم‌های پیشرفته و کنترل Real-time: تسلط بر Supabase Realtime برای همگام‌سازی آنی داده‌ها و استفاده از تکنیک‌های پیشرفته استریم مانند Debounce و کنترل ورودی مبتنی بر تایمر برای تجربه جستجوی بهینه.

  • جوهر مقیاس‌پذیری: طراحی معماری‌ای چنان منعطف که بتوانید ابزار مدیریت وضعیت خود را بدون تغییر حتی یک خط از منطق اصلی کسب‌وکار (Business Logic) تعویض کنید.

نقشه راه برنامه آموزشی

  1. پایه‌ها: تسلط بر محیط VS Code و ابزارهای ضروری بهره‌وری برای حذف کدهای تکراری (Boilerplate).

  2. معماری: استقرار اصول محوری معماری Clean با تمرکز بر قانون وابستگی و جداسازی مسئولیت‌ها.

  3. زیرساخت: ایجاد محیط Monorepo و طراحی بک‌اند Supabase (شامل SQL، RLS، توابع و تریگرها).

  4. توسعه: پیاده‌سازی قابلیت‌های اصلی (احراز هویت، پست‌ها، جستجو) با استفاده از Riverpod در ترکیب با Global Event Bus.

  5. پیشرفته: بررسی عمیق Supabase Realtime برای تشخیص لحظه‌ای داده‌ها و همگام‌سازی رابط کاربری.

  6. سطح بعدی: بررسی نهایی پروژه و نگاه استراتژیک به نحوه گسترش این معماری به سایر کتابخانه‌های مدیریت وضعیت.

این دوره برای چه کسانی است؟

  • توسعه‌دهندگان فلاتری که اپلیکیشن‌های پایه ساخته‌اند و آماده‌اند تا با معماری‌های حرفه‌ای و آماده برای تولید روبرو شوند.

  • توسعه‌دهندگانی که با رشد پروژه‌هایشان در نگهداری کد دچار مشکل شده‌اند و به دنبال «معماری Clean» به عنوان یک راهکار قطعی هستند.

  • توسعه‌دهندگان مستقل یا مهندسان استارتاپی که می‌خواهند سریعاً اپلیکیشن‌های با کارایی بالا را با استفاده از Supabase (BaaS) عرضه کنند.

  • جوی‌کارانی که می‌خواهند مهارت‌های «طراحی اپلیکیشن مقیاس‌پذیر» و «مدیریت Monorepo» را در پورتفولیوی حرفه‌ای خود به نمایش بگذارند.

پیش نیازها

  • مبانی فلاتر و دارت: باید با ویجت‌های پایه راحت باشید و درک اولیه‌ای از برنامه‌نویسی ناهمگام (async/await) داشته باشید.

  • آشنایی با مدیریت وضعیت: تجربه کار با هر راهکاری مانند Provider، Riverpod 2، BLoC، GetX و غیره مفید است. حتی اگر با Riverpod تازه‌کار هستید، می‌توانید مطالب را دنبال کنید.

  • دانش پایه SQL: درک اولیه از خواندن و نوشتن داده‌ها توصیه می‌شود. سیاست‌های پیچیده پایگاه داده (RLS) و توابع به صورت گام‌به‌گام آموزش داده می‌شوند.

ارائه متریال آموزشی و سورس کد

  • اسلایدهای PDF با کیفیت: ارائه مطالب ارائه در قالب PDF شامل تئوری‌های کلیدی و نمودارهای معماری برای هر بخش. (دانلود از تب Resources هر بخش)

  • ارائه سورس کد نهایی:

    سطح پایه: کد کامل ابزارهای بهره‌وری و سینتکس‌های اصلی (مانند data_class) پوشش داده شده در بخش ۲ ارائه می‌شود.

    پروژه اصلی: ساختار Monorepo و کد پیاده‌سازی نهایی برای کل اپلیکیشن community_board از بخش ۴ به بعد ارائه می‌گردد.

  • لینک‌های سورس کد و دستورالعمل‌های استفاده به طور دقیق در اولین درس از بخش‌های ۲ و ۴ ارائه خواهد شد.

فقط یاد نگیرید «چطور» بسازید؛ درک کنید «چرا» اینگونه طراحی می‌کنیم. در این مسیر برای ارتقای مهارت‌های توسعه خود به سطح بعدی با من همراه شوید!


سرفصل ها و درس ها

مقدمه Introduction

  • مرور کلی آموزش Tutorial Overview

  • مرور کلی اپلیکیشن Community Board Community Board App Overview

  • ویژگی‌های خاص و مقیاس‌پذیری اپلیکیشن Special Feature & App Scalability

  • مخاطبان هدف، پیش‌نیازها و ساختار کلی Target Audience, Required Background, Overall Structure

  • راهنمای استفاده از متریال آموزشی (PDF) و سورس کد گیت‌هاب Guidance on Using Learning Materials (PDF) and GitHub Source Code

پایه‌های توسعه: مفاهیم محوری و ابزارهای بهره‌وری Development Foundations: Core Concepts and Productivity Tools

  • راهنمای استفاده از کدهای تمرینی و گیت‌هاب Guide to Using Practice Code and GitHub

  • افزونه تولیدکننده Data Class در دارت (۱) Dart Data Class Generator Extension (1)

  • افزونه تولیدکننده Data Class در دارت (۲) Dart Data Class Generator Extension (2)

  • اسنیپت‌های Riverpod و افزونه‌های Freezed Flutter Riverpod Snippets & Freezed extensions

  • افزونه‌های کاربردی VSCode Useful VSCode extensions

  • کلاس‌های Callable Callable Classes

  • مدیریت خطا با Either (۱) Error Handling with Either (1)

  • مدیریت خطا با Either (۲) Error Handling with Either (2)

  • مبانی json_serializable (۱) json_serializable primer (1)

  • مبانی json_serializable (۲) json_serializable primer (2)

مرور کلی معماری Clean Clean Architecture Overview

  • مرور معماری Clean (۱) Clearn Architecture Overview (1)

  • مرور معماری Clean (۲) Clearn Architecture Overview (2)

  • مرور معماری Clean (۳) Clearn Architecture Overview (3)

  • مرور معماری Clean (۴) Clearn Architecture Overview (4)

  • مرور معماری Clean (۵) Clearn Architecture Overview (5)

  • ساختار پوشه‌بندی معماری Clean Clearn Architecture Folder Structure

مونوریپو (Monorepo): پی‌ریزی برای مقیاس‌پذیری Monorepo: Laying the Foundation for Scalability

  • ساختار کلی اپلیکیشن Main App Structure

  • چرا Monorepo و ساختار آن Why Monorepo & Monorepo structure

  • تنظیمات pubspec.yaml، فایل barrel و پکیج core pubspec.yaml, barrel file, core package setup

  • تنظیمات پکیج domain و پکیج data_supabase domain package, data_supabase package setup

  • تنظیم فایل analysis_options.yaml analysis_options.yaml file setup

  • راه‌اندازی riverpod_app (۱) riverpod_app setup (1)

  • راه‌اندازی riverpod_app (۲) riverpod_app setup (2)

  • راه‌اندازی riverpod_app (۳) riverpod_app setup (3)

  • راه‌اندازی riverpod_app (۴) riverpod_app setup (4)

بک‌اند Supabase Supbase Backend

  • راهنمای راه‌اندازی بک‌اند Supabase (سورس کد SQL) Supabase Backend Setup Guide (SQL Source Code)

  • جدول public.profiles public.profiles table

  • مقایسه جدول auth.users و public.profiles auth.users table vs public.profiles table

  • جداول public.posts، public.comments و public.likes public.posts, public.comments and public.likes tables

  • تنظیمات ذخیره‌سازی Supabase: تصاویر پست‌ها و آواتارها supabase storage setup: post-images and avatars

  • امنیت سطح ردیف (RLS) برای جدول پروفایل‌ها profiles table Row Level Security

  • امنیت سطح ردیف (RLS) برای جدول پست‌ها posts table Row Level Security

  • امنیت سطح ردیف (RLS) برای جداول کامنت‌ها و لایک‌ها comment table and likes table Row Level Security

  • امنیت سطح ردیف (RLS) برای ذخیره‌ساز تصاویر و آواتارها post-images storage and avatars storage Row Level Security

  • تابع تریگر handle_new_user handle_new_user trigger function

  • تابع تریگر updated_at updated_at trigger function

  • تابع تریگر update_comments_count update_comments_count trigger function

  • تابع تریگر update_likes_count و تابع handle_like update_likes_count trigger function, handle_like function

  • تابع update_user_profile update_user_profile function

  • ویوها (Views): post_display_view و comment_display_view Views: post_display_view, comment_display_view

  • توابع get_my_posts و search_posts get_my_posts function, search_posts function

  • توابع create_post، update_post، create_comment و update_comment create_post, update_post, create_comment, update_comment functions

  • دسترسی‌های service_role service_role permissions

دوره فشرده Mutation در Riverpod 3 (اختیاری) Riverpod 3 Mutation Crash Course (Optional)

  • [باید بخوانید] اطلاعات مهم قبل از شروع بخش ۶ [Must Read] Important Information Before Starting Section 6

  • راهنمای استفاده از سورس کد و گیت‌هاب Guide to Using Source Code and GitHub

  • فایل analysis_options.yaml مورد استفاده در دوره Mutation The analysis_options.yaml file used in the Riverpod Mutation Course

  • مقدمه‌ای بر Mutation Introduction to Mutation

  • اپلیکیشن todo_legacy (۱): دموی برنامه و مدل Todo todo_legacy app (1): app demo & Todo model

  • اپلیکیشن todo_legacy (۲): وضعیت TodoListState todo_legacy app (2): TodoListState

  • اپلیکیشن todo_legacy (۳): ارائه دهنده todoListProvider todo_legacy app (3): todoListProvider

  • اپلیکیشن todo_legacy (۴): مدیریت وضعیت‌های فیلتر و شمارش todo_legacy app (4): todoListProvider,completedCountProvider,filteredTodosProvid

  • اپلیکیشن todo_legacy (۵): رابط کاربری صفحه اصلی todo_legacy app (5): UI - HomePage

  • اپلیکیشن todo_legacy (۶): صفحات افزودن و ویرایش Todo todo_legacy app (6): UI - AddTodoPage, UpdateTodoPage

  • اپلیکیشن todo_legacy (۷): تست اپلیکیشن todo_legacy app (7): app test

  • اپلیکیشن todo_mutation (۱): ایجاد Mutationها و اصلاح Providerها todo_muation app (1): Creating Mutations and Modifying Providers

  • اپلیکیشن todo_mutation (۲): به‌روزرسانی رابط کاربری todo_mutation app (2): UI updates

  • اپلیکیشن todo_mutation (۳): تست اپلیکیشن todo_mutation app (3): app test

  • اپلیکیشن todo_mutation (۴): [عیب‌یابی] نمایش امن اسنک‌بار پس از unmount todo_mutation app (4): [Troubleshooting] Safely showing a snackbar after unmount

  • اپلیکیشن todo_mutation (۵): مقایسه provider و mutation todo_mutation app (5): provider vs mutation

  • اپلیکیشن login_legacy login_legacy app

  • اپلیکیشن login_mutation login_mutation app

  • کار با Mutation با تایپ‌های غیر void Mutation with non-void type T

قابلیت احراز هویت Authenticatioin Feature

  • مرور کلی سیستم احراز هویت Authentication Overview

  • بخش core: خطاها و استثناها، رابط UseCase core: Failures & Exceptions, UseCase Interface

  • پارامترهای نام‌گذاری شده خصوصی Private Named Parameters

  • بخش domain: موجودیت UserEntity، رابط AuthRepository و UseCaseها domain: UserEntity, AuthRepository Interface, UseCases

  • نکات احتیاطی هنگام استفاده از فایل‌های barrel Cautions when using barrel files

  • بخش data: مدل UserModel data: UserModel

  • بخش data: رابط AuthRemoteDataSource و پیاده‌سازی Supabase data: AuthRemoteDataSource Interface, SupabaseAuthRemoteDataSource

  • بخش data: پیاده‌سازی AuthRepositoryImpl data: AuthRepositoryImpl

  • تزریق وابستگی‌های (DI) احراز هویت Auth Dependency Injections

  • کنترلر احراز هویت (۱): وضعیت AuthStatus و AuthState AuthController (1) - AuthStatus enum, AuthState

  • کنترلر احراز هویت (۲) AuthController (2)

  • Mutationهای ورود، ثبت‌نام و استثنای PresentationFailure Login Mutation, Signup Mutation, PresentationFailureException

  • قالب‌های صفحات اپلیکیشن App Pages Templates

  • ثابت‌های مسیریابی (Routing) Routing Constants

  • ناوبری تب‌ها (Tab Navigation) Tab Navigation

  • راه‌اندازی GoRouter (۱) GoRouter Setup (1)

  • راه‌اندازی GoRouter (۲) GoRouter Setup (2)

  • صفحه ورود (۱) LoginPage (1)

  • صفحه ورود (۲) LoginPage (2)

  • صفحه ثبت‌نام SignupPage

  • تست ورود و ثبت‌نام Login, Signup Test

قابلیت پست‌ها Post Feature

  • بخش domain: موجودیت PostDisplay domain: PostDisplay entity

  • بخش domain: رابط PostRepository و UseCase دریافت پست‌ها domain: PostRepository interface (getPosts), getPostsUseCase

  • بخش data: مدل PostDisplayModel data: PostDisplayModel

  • بخش data: منابع داده و پیاده‌سازی PostRepositoryImpl data: PostRemoteDataSource, SupabasePostRemoteDataSource, PostRepositoryImpl

  • تزریق وابستگی‌های مربوط به پست Post Dependency Injection

  • مقایسه Controller در برابر Mutation و ترکیب هر دو Controller vs Mutation vs Controller + Mutation

  • کنترلر لیست پست‌ها: وضعیت PostListState PostListController - PostListState

  • کنترلر لیست پست‌ها: متدهای build و fetchNextPage PostListController - build, fetchNextPage

  • کنترلر لیست پست‌ها: متد refresh PostListController - refresh

  • صفحه پست‌ها (۱) PostPage (1)

  • صفحه پست‌ها (۲) PostPage (2)

  • ویجت PostCard PostCard widget

  • راهنمای Pagination و فیزیک اسکرول مختص هر پلتفرم Platform-Specific Scroll Physics & Pagination Guide

  • بخش domain: ایجاد پست domain: Post Creation

  • بخش data: ایجاد پست data: Post Creation

  • پیاده‌سازی createPostMutation createPostMutation

  • صفحه فرم ایجاد پست (PostFormPage) PostFormPage

  • تست ایجاد پست Testing Post Creation

  • ایجاد GlobalEventBus برای اطلاع‌رسانی ایجاد پست Creating GlobalEventBus (PostCreatedDispatched)

  • پردازش EventBus در PostListController Processing GlobalEventBus in PostListController (PostCreatedDispatched)

  • تست EventBus و اسکرول نامحدود در صفحه پست‌ها Processing & Testing GlobalEventBus, infinite scrolling in PostPage

  • جزئیات GlobalEventBus GlobalEventBus details

  • بخش domain: جزئیات پست domain: Post Detail

  • بخش data: جزئیات پست data: Post Detail

  • کنترلر جزئیات پست (۱) PostDetailController (1)

  • کنترلر جزئیات پست (۲) PostDetailController (2)

  • کنترلر لیست کامنت‌ها: وضعیت و متد build CommentListController - CommentListState, build

  • کنترلر لیست کامنت‌ها: متدهای refresh و fetchNextPage CommentListController - refresh, fetchNextPage

  • صفحه جزئیات پست (۱) PostDetailPage (1)

  • صفحه جزئیات پست (۲) PostDetailPage (2)

  • نمای لیست کامنت‌ها و ویجت CommentCard CommentListView, CommentCard

  • بخش domain و data: لایک domain, data: like

  • کنترلر لیست پست‌ها: تغییر وضعیت لایک و Mutation آن PostListController - toggleLike, toggleLikeMutation

  • پیاده‌سازی لایک در صفحه پست‌ها PostPage - like

  • کنترلر جزئیات پست: تغییر وضعیت لایک و Mutation آن PostDetailController - toggleLike, postDetailToggleLikeMutation

  • پیاده‌سازی لایک در صفحه جزئیات PostDetailPage - like

  • بخش domain: افزودن، ویرایش و حذف کامنت domain: Comment - Add, Edit, Delete

  • بخش data: افزودن، ویرایش و حذف کامنت data: Comment - Add, Edit, Delete

  • پیاده‌سازی createCommentMutation createCommentMutation

  • حذف کامنت و به‌روزرسانی لیست پس از حذف deleteCommentMutation, CommentListController - refillAfterDelete

  • پیاده‌سازی updateCommentMutation updateCommentMutation

  • فیلد ورودی کامنت CommentInputField

  • افزودن توابع ویرایش و حذف به CommentCard و تست آن‌ها CommentCard - Adding Edit, Delete functions, Testing comments functions

  • بخش domain: حذف و ویرایش پست domain: Post Deletion, Post Edit

  • بخش data: حذف و ویرایش پست data: Post Deletion, Post Edit

  • حذف پست، اطلاع‌رسانی حذف و Mutation ویرایش deletePostMutation, PostDeletedDispatched, post refill, updatePostMutation

  • پیاده‌سازی حذف پست در صفحه جزئیات PostDetailPage - post deletion

  • حالت ویرایش در صفحه فرم پست PostFormPage - edit mode

  • معماری و خوانایی کد Architecture & Readability

قابلیت پروفایل Profile Feature

  • بخش domain domain

  • بخش data data

  • تزریق وابستگی‌ها Dependency Injection

  • کنترلر پروفایل من (MyProfileController) MyProfileController

  • بخش domain و data: دریافت پست‌های من domain, data: Get My Posts

  • رویداد به‌روزرسانی پروفایل در GlobalEventBus GlobalEventBus: ProfileUpdatedDispatched

  • کنترلر لیست پست‌های من و Mutation لایک MyPostListController, myPostToggleLikeMutation

  • صفحه پروفایل من (۱) MyProfilePage (1)

  • صفحه پروفایل من (۲) MyProfilePage (2)

  • ویجت MyPostList MyPostList widget

  • کنترلر پروفایل کاربر و صفحه UserProfilePage UserProfileController, UserProfilePage

  • پیاده‌سازی updateProfileMutation updateProfileMutation

  • صفحه ویرایش پروفایل (۱) EditProfilePage (1)

  • صفحه ویرایش پروفایل (۲) EditProfilePage (2)

قابلیت جستجو Search Feature

  • بخش domain domain

  • بخش data data

  • تزریق وابستگی‌ها Dependency Injection

  • وضعیت جستجو (SearchState) SearchState

  • کنترلر جستجو (۱) SearchController (1)

  • کنترلر جستجو (۲) SearchController (2)

  • کنترلر جستجو (۳) و Mutation لایک در جستجو SearchController (3), searchToggleLikeMutation

  • صفحه جستجو (۱) SearchPage (1)

  • صفحه جستجو (۲) SearchPage (2)

قابلیت Realtime در Supabase Supabase Realtime

  • مرور کلی، تنظیمات، domain و data Overview, setup, domain, data

  • بخش data: پیاده‌سازی RealtimeRepositoryImpl data: RealtimeRepositoryImpl

  • تزریق وابستگی‌ها Dependency Injection

  • افزودن قابلیت‌های Realtime به ScaffoldWithNavBar Adding realtime functionality to ScaffoldWithNavBar

جمع‌بندی و پایان Outro

  • جمع‌بندی نهایی Outro

نمایش نظرات

آموزش فلاتر مقیاس‌پذیر: Supabase، معماری Clean و Riverpod
جزییات دوره
20.5 hours
165
(آخرین آپدیت)
49
4.9 از 5
دارد
دارد
دارد
Sangwook Cho
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Sangwook Cho Sangwook Cho

YourDevEdge