Mobil dasturlash

Flutter Enterprise mobil ilovalariga tayyormi?

Flutter Beta ko’rinishda Google tomondan taqdim qilinganda, u haqida ko’pchilik gapira boshlashdi. Boshqa tillar va frameworklardan farq qilishi bilan vadalar berildi. Flutter uchun Dart tili tanlandi. O’z vaqtida Android uchun Java/Kotlin va iOS uchun Objective C/Swift tanlangaki kabi. 

Flutter taqdim qilinganiga ko’p bo’lmadiki, Flutter ilovalari bilan foydalanish mumkin bo’lgan 4000 dan ortiq kutubxonalar hozirda mavjud. O’rta, Youtube va StackOverflow — Flutter bilan har xil narsalarga qanday erishish mumkinligi haqida maqolalar bilan to’ldirib yuborildi. 

Flutter SDK GitHub-dagi ikkinchi eng tezkor loyihaga aylandi. Bularning barchasi Flutterni baham ko’rish, o’stirish va takomillashtirishga intilayotgan gullab-yashnayotgan jamoadan dalolat berardi.

Shu bilan birga, Flutter va uning kutubxonasi ekotizimining Enterprise dasturlarini yaratishga tayyor yoki yo’qligi to’g’risida aniq ma’lumot beradigan maxsus talablarni ko’rib chiqish vaqti keldi deb, bu maqolani siz azizlarga taqdim qilmoqchimiz. 

Mening maqsadim Enterprise ko’rishindagi native ilovalar talab qiladigan va har bir talab uchun kamida bitta Flutter echimini topishdir. Umid qilamanki, Flutter hozirda gibrid kodlash talab qilinmaydigan Enterprise dasturlarini yaratishga tayyor. Maqola davomida ko’ramiz.

Men tanlagan talablar quyidagi sohalarga bo’lingan:

  • Arxitektura
  • Rivojlanish muhiti (Development environment)
  • Foydalanuvchi interfeysi (UI)
  • Apparat xususiyatlaridan foydalanish (Access to hardware features)
  • Xavfsizlik
  • Turli xil talablar (Miscellaneous requirements)

Tayyor bo’lsangiz tepada keltirilgan imkoniyatlar haqida birma bir to’xtalib o’tsak. 

Arxitektura

Enterprise ilovalarida quyidagilarga imkon beradigan arxitekturalar bo’lishi kerak:

  • bir vaqtning o’zida kodlar bazasida ishlash uchun ishlab chiquvchilarning katta jamoalari
  • hujjatlashtirilgan dizayn naqshlaridan foydalanish imkoniyatiki
  • ilova xususiyatlarining keng doirasini tushunish osonroq bo’lsin

Bu turli xil ishlab chiqaruvchi dasturchilar jamoasining turli darajalarida yuqori samaradorlikka olib keladi.

Flutter veb-resurslar, mahalliy saqlash, Sqlite ma’lumotlar bazalari va kutubxona plaginlari orqali qurilmalarga oddiy va xavfsiz tarmoq bilan ta’minlaydi.

State management Flutter ilova arxitekturasida muhim o’rin tutadi va Google tomonidan Provider doirasidan foydalanish bo’yicha so’nggi tavsiyalarni tushunish va qurish osondir. Redux, BLoC, InheritedWidget, setState va boshqa birqancha state managementlar mavjud bo’lib, ular Flutter app tuzayotganda foydalanish mumkin bo’ladi. 

Dependency Injection— bu kod birliklarini iloji boricha mustaqil va qayta ishlatishga imkon beradigan dizayn naqshidir. Bundan tashqari, kodni tekshirishni osonlashtiradi. GetIt lokatori DI kutubxonasidan foydalanish uchun oddiy va Enterprise dastur boshqaruv tizimida (masalan, Provayder) ilova qatlamlarini ajratishni ta’minlash uchun ishlaydi.

Agar Dartning oqimlari va async to’plami sizning asinxron dasturlash ehtiyojlaringiz uchun etarli bo’lmasa, ReactiveX — bu kuzatiladigan hodisalar oqimiga asoslangan asenkron dasturlashning mashhur uslubi. RxDart Flutter va Enterprise dastur boshqaruv tizimlari bilan yaxshi birlashadi.

Background processing interfeysida UI sezgirligini saqlagan holda, hisob-kitoblarni intensiv ravishda bajarishga imkon beradi. Dartning Izolatsiyalari — bu orqa fonda ishlarni bajarish uchun (biroz murakkab) asos va hisoblash ishlov berish funktsiyasi eng ko’p ishlatiladigan holatlar uchun Izolatlarni soddalashtiradi. Fonni qayta ishlashga bo’lgan talabingizning murakkabligiga qarab, oddiy platforma xususiyatlaridan tashqari, mahalliy platforma xususiyatlarini qabul qilish kerak bo’lishi mumkin. Tafsilotlar uchun havolani ko’ring.

JSON serialisation / deserialisation har qanday RESTful mijoz uchun zarur, ko’pchilik Enterprise ilovalariga xosdir. Ushbu havola qo’llanmadan kodga asoslangan echimlar variantlarini taqdim etadi.

Navigation va back stack management bu asosiy talab, ammo iOS foydalanuvchi tajribasida odatiy bo’lgan pastki navigatsiya yoqilgan ilovada bir nechta yorliqlarda bir nechta back stack managementni saqlash uchun ilovaga maxsus talab bo’lishi mumkin.

Deep linking veb-saytdan navigatsiya talab qilish yoki ilova ichidagi muayyan joylarga yuborish imkonini beruvchi bildirishnomani ta’minlaydi.

Ilova orqa fonda ishlamay qolganda ham, ma’lumotlarni saqlash uchun kichik hajmdagi kalit / qiymat ma’lumotlarini saqlash mumkin. Local storage haqida o’qib oling.

SQLite-dan katta hajmdagi tuzilgan ma’lumotlar bilan ishlashda foydalanish mumkin.

Har bir platformaning fayl tizimiga ilova asosida o’qish / yozishga ruxsat beriladi.

Enterprise darajasida push xabarnomasi odatda orqa tomonning integratsiyasini talab qiladi, masalan, foydalanuvchiga kredit karta to’lovi muddati o’tganligi to’g’risida xabar berish. Yoki Firebasega xabar yuborish bu kabi echimlardan biridir. 

Development environment

Ishlab chiquvchilar o’zlarining Flutter IDE-si uchun Android Studio / IntelliJ va Visual Studio Code-ni tanlashlari mumkin, chunki har ikkalasi ham Mac, PC, Linux va Chromebook-da juda yaxshi qo’llab-quvvatlanadi. 

Scalability: Flutter ilovalari tabiiy ravishda kengaytirilishi mumkin, chunki u tashqi kutubxonalarning ishlashini ta’minlash uchun Dart paketlarini import qiluvchi Dart ekotizimiga asoslangan.

Flutter loyihalarini Flutter Dart paketlarida qayta ko’rib chiqish mumkin, bu esa Enterprise ilovasida ishlab chiquvchilarning katta jamoa bo’lib ishlarni taqsimlashning ko’pgina usullarini taqdim etadi.

Sinovga yaroqliligi (Testability): Flutter-ning har bir vidjeti va UI-kodi bo’lmagan artefakt Flutter-da taqdim etilgan uchta sinov tizimlaridan birini sinovdan o’tkazishi mumkin: Unit Test, Widget Test va Integration Test. 

Bu maksimal vaqtni qamrab olishga imkon beradi, faqat mavjud vaqt va manbalar bilan cheklangan. Mock_web_server-dan foydalanib, dastur ichidagi soxta veb-serverga qarshi ishlaydigan to’liq mustaqil integratsiya sinovlari yuborish mumkin. 

Uzluksiz integratsiya / uzluksiz etkazib berish: Flutter dasturlarni Google Play do’koniga yoki Apple App do’koniga joylashtirish uchun Android va iOS-ning asosiy vositalaridan foydalanadi, shuning uchun mavjud bo’lgan har qanday Enterprise mobil CI / CD-ning o’rnatilishi bilan birgalikda ishlaydi. 

Flutter dasturini ishlab chiqaruvchisi ko’p vaqtini Flutter / Dart muhitida o’tkazishi mumkin bo’lsa-da, kunning oxirida Flutter dasturlari Android va iOS qurilmalariga o’rnatiladi. Natijada, asosiy platformalarning ba’zi jihatlarini, ayniqsa tarqatish masalalarini o’rganish zarurati paydo bo’lmaydi. Flutter dasturini muvaffaqiyatli amalga oshirish uchun qanday qilib dasturlarni yaratish va imzolash va profillarni tayyorlash va hokazolarni bilish kerak. Flutter dasturchilarining yana bir zaruriy qobiliyati — har bir mahalliy platformada disk raskadrovka qilish va ikkita turli platformalarning stack trace ya’ni izlarini o’qishni o’rganish kerak bo’ladi.

User Interface (UI)

Enterprise mobil ilovalari mukammal foydalanuvchi interfeysini ta’minlashga katta e’tibor qaratishlari kerak. Flutter ham Android (Material widgets) va iOS (Cupertino vidjetlari) ikkala yuqori aniqlikdagi UI-larni mukammal to’plamini taqdim etadi.

Sahifalarga o’tish (Page transitions) — bu UI pop-ni oshirish uchun talab mavjud bo’lsa, animatsiya yordamida ilova sahifalari orasida navigatsiya qanday amalga oshirilishini ko’rsatuvchi rolini o’ynab beradi.

Peyjing / infinite scrolling ro’yxatining ko’rinishi, foydalanuvchi uchun katta hajmdagi qurilmalar xotirasidan foydalanmasdan ko’rsatilishi kerak bo’lgan holatlarda keng tarqalgan talabdir.

Rasmni yuklash / keshlash kutubxonasi, agar asosiy rasm yoki SVG tasvir etarli bo’lmasa, ko’pgina rasmlarni, shu jumladan keshlashni boshqarishning oson usulini ta’minlaydi.

Google Maps va Apple Maps-ga kirish mumkin.

Dasturchilar oldindan ko’rish holatida bo’lsa-da, platformalar veb-ko’rinishiga kirish mumkin.

Internationalization qo’llab-quvvatlanadi.

Accessibility maxsus imkoniyatlar qo’llab-quvvatlanadi. 

Grafiklar kutubxonasi ma’lumotlar ketma-ketligini grafikalar, pie va chizma jadvallari kabi vizual ravishda osonlashtiradi.

Access to hardware features(hardware xususiyatlaridan foydalanish)

Enterprise mobil ilovasi qurilmaning qo’shimcha qurilmalariga kirish huquqiga ega bo’lishi uchun ba’zan juda muhim.

  • Camera
  • Biometric authentication barmoq izi va yuzni orqali.
  • GPS
  • Accelerometer (Akselerometr)
  • NFC. Shuni yodda tutingki, NFC teglarining faqat bir qismi qo’llab-quvvatlanadi va NFC dasturidan foydalanish iOS platformasida Apple dizayni tomonidan juda cheklangan, Flutter bunga sabab emas.

Xavfsizlik

Enterprise ilovalarida xavfsizlik muhim ahamiyatga ega. Flutter Android va iOS dasturlari uchun sinov muhitida ishlaydi, shuning uchun har bir Flutter ilovasi o’ziga xos Android va iOS dasturlarining xavfsizligini ta’minlaydi, shu jumladan https orqali xavfsiz tashqi veb-saytlar bilan aloqa qilish imkoniyatiga ega.

Autentifikatsiya kabi muhim talablar imkoni mavjud. Oddiy autentifikatsiya quyidagi autentifikatsiya ta’minotchilariga (ularning hujjatlaridan) foydalanib ishlatish imkonini beradi:

  • Azure Active Directory
  • Amazon
  • Dropbox
  • Facebook
  • Github
  • Google
  • Instagram
  • LinkedIn
  • Microsoft Live Connect
  • har qanday OAuth2/Basic Auth server.

Amazon shuningdek o’zining Cognito SDK-larini taqdim etadi.

SSL sertifikat bilan biriktirish mumkin. 

Teskari muhandislikning qiyinchiliklari: Flutter Dart kodi ARM ikkilik kodiga tushadi, shuning uchun Android-ning bayt kodiga qaraganda dasturchini reverse ishlashi biroz qiyinroq bo’lishi mumkin. 

Secure storage qurilmada oz miqdordagi key / value ma’lumotlarini ishonchli saqlash usulini ta’minlaydi.

Miscellaneous requirements (Turli xil talablar)

Bu erda bir-biriga bog’liq bo’lmagan ba’zi talablar, ular o’zlari uchun muhimdir, ammo yuqoridagi toifalarning birortasiga to’g’ri kelmaydi.

Tahlil: Adobe va Firebase tahlil kutubxonalari Flutter uchun mavjud.

Xato / ishdan chiqish haqida xabar berish: Sentry kutubxonasi.

Uchinchi tomon / ochiq manbali kutubxonalar: Uchinchi tomon kutubxonalaridan foydalanish ko’pincha ilova kutubxonadan foydalanishni ochiqchasiga tasdiqlashini va ushbu kutubxona litsenziyalarini ko’rish usulini taqdim qiladi.

QR-kodlarni yarating va skanerlash.

Shaxsiy kontaktlar ro’yxatiga kirish.

Tafsilotlarni ijtimoiy tarmoqlarda baham ko’rish.

SMS va MMS xabarlarini yuborish. Bir martalik parollar uchun SMS-xabarlarni yuborish.

To’lovlarni Square Reader SDK-dan foydalanib biriktirilgan karta orqali qabul qilish.

Square In-App payments SDK dan foydalanib to’lovlarni SDK yordamida amalga oshirish.

Audio / musiqa / videoni tinglash.

Foydalanuvchi sog’lig’i haqidagi ma’lumotni o’qish.

TensorFlow Lite va ML to’plami qurilmada va cloudlarda o’rganish uchun imkoniyatlar.

va boshqa ko’pgina imkoniyatlar…

Flutter-dan yana kim foydalanmoqda?

Google-ning yaqinda paydo bo’ladigan bulutli o’yin xizmati(cloud gaming service) Stadia, Android va iOS uchun o’yinlar chiqarish uchun Flutter-ni tanladi. 

Xulosa

Yuqorida keltirilgan havolalardan ko’rinib turibdiki, Flutterda Enterprise mobil ilovalariga qo’llaniladigan ko’plab talablarga javob beradigan yechimlar mavjud. Sog’lom va o’sib borayotgan Flutter ekotizimi bilan, ehtimol kelajakdagi Enterprise ilovangizni ommaga taqdim qilarsiz. 

Barchasini o'qish

Muhammad Xalil

WIUT bitiruvchisi, O’qituvchi. Asosiy maqsadlaridan biri – Ilm olish va uni birovlarga ham o’rgatish. Zamonaviy kasblarda video darsliklar muallifi. Qalamkashlik bilan ham shug’ullanib turadi. Sayohat qilishni yoqtiradi. Tarixiy kitoblar, hujjatli filmlar jonu-dili.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button