Jetpack Compose یک سیستم navigation قدرتمند برای ساخت تجربیات کاربری بصری (UI) در برنامههای اندرویدی شما فراهم میکند.
هنگام جابجایی بین صفحات، ممکن است نیاز داشته باشید که دادههای را از یک صفحه لیست به یک صفحه جزئیات به اشتراک بگذارید. در این پست ما دو روش خوب برای دستیابی به این هدف را بررسی میکنیم و همچنین مزایا و معایب هر کدام را شرح میدهیم تا شما بتوانید راه حل مدنظر خود را انتخاب کنید.
در حالی که Jetpack Compose navigation روشی راحت برای جابجایی بین صفحات ارائه میدهد، در حال حاضر محدودیتهایی در هنگام ارسال اشیاء دادهای پیچیده به عنوان آرگومان دارد. در زیر به برخی از نکات کلیدی اشاره شده است:
محدودیتهای آرگومانهای Jetpack Compose Navigation:
1. روش اول : انتقال داده به صورت رشته JSON (راهحل موقت)
یک راهحل موقت رایج برای این محدودیت، تبدیل شیء دادهای شما (مثلاً مدل TV show) به یک رشته JSON با استفاده از کتابخانههایی مانند GSON یا Moshi است. در اینجا یک تقسیمبندی از مراحل آورده شده است:
1. ایجاد مدل داده: یک کلاس داده تعریف کنید که نمایانگر شیء TVShow شما باشد. این کلاس شامل ویژگیهایی مانند عنوان، توضیحات و امتیازات خواهد بود.
2. Serializing به JSON: در صفحه لیست، هنگامی که کاربر بر روی یک آیتم TVShow کلیک میکند، TVShow مربوطه را به JSON تبدیل کنید.
3. navigation با آرگومان: از کتابخانه navigation استفاده کنید تا به صفحه جزئیات بروید. رشته JSON که Serializing کردهاید را به عنوان یک آرگومان به صفحه جزئیات ارسال کنید.
4. Deserializing در صفحه جزئیات: در تابع composable صفحه جزئیات، به آرگومانهای دریافتی دسترسی پیدا کرده و رشته JSON را دوباره به شیء اصلی TV show را Deserializing کنید.
5. استفاده از شیء: اکنون شما شیء TVShow را در صفحه جزئیات دارید. از ویژگیهای آن برای پر کردن عناصر رابط کاربری و نمایش جزئیات نمایش می توانید استفاده کنید.
همه کد ها کنار هم:
مزایا:
معایب:
2. روش دوم : استفاده از Shared ViewModel (توصیهشده)
این روش جداسازی بهتری از وابستگی ها را ترویج میدهد و از تبدیل غیرضروری دادهها جلوگیری میکند. در اینجا نحوه کار آن آمده است:
1. ایجاد Shared ViewModel: یک کلاس ViewModel تعریف کنید که شیء دادهای شما (مدل TV show) را نگه دارد و متدهایی برای دسترسی و بهروزرسانی آن ارائه دهد.
2. دسترسی به ViewModel در هر دو صفحه: در صفحات لیست TVShows و جزئیات، به یک نمونه از Shared ViewModel دسترسی پیدا کنید.
3. انتقال داده: در صفحه لیست TVShows، شیء دادهای Shared ViewModel را با اطلاعات TV show انتخاب شده بهروز کنید.
4. مشاهده (Observing) دادهها: در صفحه جزئیات TVShows، از composable ViewModel برای دسترسی به همان نمونه ViewModel استفاده کنید. ویژگی selectedTvShow را Observe کنید.
مزایا:
معایب:
با درک این روشها، میتوانید به طور مؤثری اشیاء را بین صفحات در برنامههای Jetpack Compose خود انتقال دهید و تجربه کاربری کلی و جریان دادهها در برنامه خود را بهبود بخشید. روشی را انتخاب کنید که با پیچیدگی و نیازهای عملکردی پروژه شما بهترین تطابق را دارد.
ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:
بقیه آموزش های من با نام (mister developer) را می توانید در تلگرام و اینستاگرام دنبال کنید!!
کانال تلگرام: mister_developerr
اینستاگرام: mister_developerr
موفق و پیروز باشید