Psevdo Tasodifiylik: Haqiqiy Tasodifiylikdan Farqi va Dart Tilida Ishlatilishi
Kompyuterlarda tasodifiy sonlarni yaratish zarurati ko‘plab sohalarda uchraydi. O‘yinlar, shifrlash tizimlari, statistik modellashtirish va simulyatsiyalar tasodifiy sonlarga asoslanadi. Ammo, ko‘pchilik bilmagan haqiqat shuki, kompyuterlar haqiqiy tasodifiy sonlarni hosil qila olmaydi. Ular faqat psevdo tasodifiy sonlar (PRNG - Pseudo-Random Number Generator) yaratadi. Ushbu maqolada psevdo tasodifiylikning ishlash tamoyillari va Dart dasturlash tilida tasodifiy sonlarni qanday yaratish mumkinligi haqida batafsil tushuntiramiz.
---
🔰 1. Haqiqiy tasodifiylik va psevdo tasodifiylik farqi
Haqiqiy tasodifiylik tabiat hodisalariga asoslangan bo‘lib, oldindan bashorat qilib bo‘lmaydigan natijalarga ega. Masalan:
❇️ Radioaktiv parchalanish – Atom yadrolarining tabiiy parchalanishi
❇️ Termal shovqin – Elektron komponentlardagi tasodifiy termal harakatlar
❇️ Atmosfera shovqini – Tabiiy elektromagnit signallar
Bunday manbalar haqiqiy tasodifiy son generatorlari (TRNG - True Random Number Generator) uchun ishlatiladi.
Aksincha, psevdo tasodifiy son generatorlari (PRNG) kompyuter algoritmlariga asoslanib ishlaydi va oldindan hisoblab chiqiladigan natijalarni qaytaradi. Bu deterministik jarayon bo‘lib, agar bir xil boshlang‘ich qiymat (seed) ishlatilsa, natija ham bir xil bo‘ladi.
---
🔰 2. Dart dasturlash tilida tasodifiy sonlar yaratish
Dart tilida tasodifiy sonlarni yaratish uchun dart:math kutubxonasidagi Random sinfi ishlatiladi.
2.1. Oddiy psevdo tasodifiy sonlar
Quyidagi kod Random sinfi yordamida 0 dan 99 gacha tasodifiy butun son, 0.0 dan 1.0 gacha tasodifiy o‘nlik son va true/false qiymatlarini hosil qiladi:
Bu kod har safar ishga tushirilganda turli natijalar hosil qiladi, chunki Random avtomatik ravishda tizim vaqtiga asoslangan seed ishlatadi.
---
2.2. Seed bilan bir xil natijani olish
Agar biz seed ni qo‘lda belgilasak, har safar bir xil natijalar hosil bo‘ladi:
Ko‘rib turganingizdek, bir xil seed ishlatilganda, har safar bir xil tasodifiy sonlar qayta hosil qilinadi. Bu psevdo tasodifiylikning yaqqol belgisi.
---
2.3. Haqiqiy tasodifiylikka yaqinroq natijalar
Agar biz kriptografik xavfsiz random generator ishlatmoqchi bo‘lsak, dart:crypto kutubxonasidagi Random.secure() dan foydalanishimiz mumkin:
Random.secure() odatiy Random sinfiga qaraganda ancha kuchli bo‘lib, u kripto xavfsiz tasodifiy sonlar hosil qiladi.
---
🔰 3. Psevdo tasodifiylik qayerda ishlatiladi?
Psevdo tasodifiylik real hayotda ko‘plab sohalarda qo‘llaniladi:
Dart tilida Random sinfi ko‘pchilik holatlar uchun yetarli bo‘lsa ham, shifrlash va xavfsizlik talab qiladigan vaziyatlarda Random.secure() ishlatilishi tavsiya etiladi.
---
🔰 4. Psevdo tasodifiylikning cheklovlari
Psevdo tasodifiy generatorlar haqiqatdan ham tasodifiy emas, chunki:
1. Ularni bashorat qilish mumkin – Agar generatorning dastlabki seed qiymati ma'lum bo‘lsa, keyingi natijalar oldindan hisoblab chiqilishi mumkin.
2. Ular vaqt o‘tishi bilan takrorlanadi – PRNG-larning ko‘pchiligi bir muddatdan so‘ng o‘zining avvalgi holatiga qaytadi.
Kompyuterlarda tasodifiy sonlarni yaratish zarurati ko‘plab sohalarda uchraydi. O‘yinlar, shifrlash tizimlari, statistik modellashtirish va simulyatsiyalar tasodifiy sonlarga asoslanadi. Ammo, ko‘pchilik bilmagan haqiqat shuki, kompyuterlar haqiqiy tasodifiy sonlarni hosil qila olmaydi. Ular faqat psevdo tasodifiy sonlar (PRNG - Pseudo-Random Number Generator) yaratadi. Ushbu maqolada psevdo tasodifiylikning ishlash tamoyillari va Dart dasturlash tilida tasodifiy sonlarni qanday yaratish mumkinligi haqida batafsil tushuntiramiz.
---
🔰 1. Haqiqiy tasodifiylik va psevdo tasodifiylik farqi
Haqiqiy tasodifiylik tabiat hodisalariga asoslangan bo‘lib, oldindan bashorat qilib bo‘lmaydigan natijalarga ega. Masalan:
❇️ Radioaktiv parchalanish – Atom yadrolarining tabiiy parchalanishi
❇️ Termal shovqin – Elektron komponentlardagi tasodifiy termal harakatlar
❇️ Atmosfera shovqini – Tabiiy elektromagnit signallar
Bunday manbalar haqiqiy tasodifiy son generatorlari (TRNG - True Random Number Generator) uchun ishlatiladi.
Aksincha, psevdo tasodifiy son generatorlari (PRNG) kompyuter algoritmlariga asoslanib ishlaydi va oldindan hisoblab chiqiladigan natijalarni qaytaradi. Bu deterministik jarayon bo‘lib, agar bir xil boshlang‘ich qiymat (seed) ishlatilsa, natija ham bir xil bo‘ladi.
---
🔰 2. Dart dasturlash tilida tasodifiy sonlar yaratish
Dart tilida tasodifiy sonlarni yaratish uchun dart:math kutubxonasidagi Random sinfi ishlatiladi.
2.1. Oddiy psevdo tasodifiy sonlar
Quyidagi kod Random sinfi yordamida 0 dan 99 gacha tasodifiy butun son, 0.0 dan 1.0 gacha tasodifiy o‘nlik son va true/false qiymatlarini hosil qiladi:
import 'dart:math';
void main() {
var random = Random(); // Random generator yaratish
print(random.nextInt(100)); // 0 dan 99 gacha tasodifiy son
print(random.nextDouble()); // 0.0 dan 1.0 gacha tasodifiy son
print(random.nextBool()); // true yoki false
}
Bu kod har safar ishga tushirilganda turli natijalar hosil qiladi, chunki Random avtomatik ravishda tizim vaqtiga asoslangan seed ishlatadi.
---
2.2. Seed bilan bir xil natijani olish
Agar biz seed ni qo‘lda belgilasak, har safar bir xil natijalar hosil bo‘ladi:
import 'dart:math';
void main() {
var random1 = Random(42); // Seed 42 bilan generator yaratamiz
var random2 = Random(42); // Xuddi shu seed bilan yana bitta yaratamiz
print(random1.nextInt(100)); // 86
print(random1.nextInt(100)); // 3
print(random2.nextInt(100)); // 86 (Xuddi shunday natija!)
print(random2.nextInt(100)); // 3 (Xuddi shunday natija!)
}
Ko‘rib turganingizdek, bir xil seed ishlatilganda, har safar bir xil tasodifiy sonlar qayta hosil qilinadi. Bu psevdo tasodifiylikning yaqqol belgisi.
---
2.3. Haqiqiy tasodifiylikka yaqinroq natijalar
Agar biz kriptografik xavfsiz random generator ishlatmoqchi bo‘lsak, dart:crypto kutubxonasidagi Random.secure() dan foydalanishimiz mumkin:
import 'dart:math';
import 'dart:crypto';
void main() {
var secureRandom = Random.secure();
print(secureRandom.nextInt(100)); // Haqiqiy tasodifiylikka yaqinroq natija
}
Random.secure() odatiy Random sinfiga qaraganda ancha kuchli bo‘lib, u kripto xavfsiz tasodifiy sonlar hosil qiladi.
---
🔰 3. Psevdo tasodifiylik qayerda ishlatiladi?
Psevdo tasodifiylik real hayotda ko‘plab sohalarda qo‘llaniladi:
Dart tilida Random sinfi ko‘pchilik holatlar uchun yetarli bo‘lsa ham, shifrlash va xavfsizlik talab qiladigan vaziyatlarda Random.secure() ishlatilishi tavsiya etiladi.
---
🔰 4. Psevdo tasodifiylikning cheklovlari
Psevdo tasodifiy generatorlar haqiqatdan ham tasodifiy emas, chunki:
1. Ularni bashorat qilish mumkin – Agar generatorning dastlabki seed qiymati ma'lum bo‘lsa, keyingi natijalar oldindan hisoblab chiqilishi mumkin.
2. Ular vaqt o‘tishi bilan takrorlanadi – PRNG-larning ko‘pchiligi bir muddatdan so‘ng o‘zining avvalgi holatiga qaytadi.
Flutter Dev | Uzbekistan 🇺🇿
Psevdo Tasodifiylik: Haqiqiy Tasodifiylikdan Farqi va Dart Tilida Ishlatilishi Kompyuterlarda tasodifiy sonlarni yaratish zarurati ko‘plab sohalarda uchraydi. O‘yinlar, shifrlash tizimlari, statistik modellashtirish va simulyatsiyalar tasodifiy sonlarga asoslanadi.…
🔰 3. Haqiqiy tasodifiylik talab qilinadigan joylarda zaif bo‘lishi mumkin – Ayniqsa, kriptografiyada PRNG ishlatish xavfsizlik muammolariga olib kelishi mumkin.
---
Xulosa
Dart tilida Random sinfi psevdo tasodifiy sonlar yaratadi, ya’ni haqiqiy tasodifiy emas. Agar siz bir xil seed bilan Random yaratsangiz, har safar bir xil natijalar qayta hosil bo‘ladi. Agar haqiqiy tasodifiylik kerak bo‘lsa, Random.secure() yoki boshqa tashqi manbalar ishlatilishi lozim.
Haqiqiy tasodifiylikka erishish uchun radioaktiv parchalanish, termal shovqin, yoki atmosfera shovqini kabi fizik jarayonlardan foydalanadigan apparatli tasodifiy generatorlar talab qilinadi. Shu sababli, psevdo tasodifiylikning cheklovlarini tushunish va uni to‘g‘ri vaziyatlarda qo‘llash muhimdir.
@flutterdevuz
---
Xulosa
Dart tilida Random sinfi psevdo tasodifiy sonlar yaratadi, ya’ni haqiqiy tasodifiy emas. Agar siz bir xil seed bilan Random yaratsangiz, har safar bir xil natijalar qayta hosil bo‘ladi. Agar haqiqiy tasodifiylik kerak bo‘lsa, Random.secure() yoki boshqa tashqi manbalar ishlatilishi lozim.
Haqiqiy tasodifiylikka erishish uchun radioaktiv parchalanish, termal shovqin, yoki atmosfera shovqini kabi fizik jarayonlardan foydalanadigan apparatli tasodifiy generatorlar talab qilinadi. Shu sababli, psevdo tasodifiylikning cheklovlarini tushunish va uni to‘g‘ri vaziyatlarda qo‘llash muhimdir.
@flutterdevuz
Flutterchilarga qo'shimcha 4-5 soatlarini tejash uchun 2 ta tavsiya:
1. Hech qachon
2. Internet Connection Checker plugin oxirgi yangilanishi ortiqcha 4 sekund kutilshlarga sabab bo'lmoqda, sababi u internet aloqasini tekshirish uchun ko'plab domenlarga murojaat qilmoqda.
Yechim (adresslarni kamaytirish):
@flutterdevuz
1. Hech qachon
Postframecallback ichida push ishlatganda CupertinoNavigator ishlatmanglar. Buzuvchi qayta yasashlarga olib keladi. Mabodo manzil sahifada tarmoqqa murojaat bo'lsa, ortiqcha murojaatlar oqimi qayerdan ekanini bilolmay "boshingiz qotadi".2. Internet Connection Checker plugin oxirgi yangilanishi ortiqcha 4 sekund kutilshlarga sabab bo'lmoqda, sababi u internet aloqasini tekshirish uchun ko'plab domenlarga murojaat qilmoqda.
Yechim (adresslarni kamaytirish):
/// Network Info
di.registerLazySingleton(
() => InternetConnectionChecker.createInstance(addresses: [
AddressCheckOption(
uri: Uri.parse("https://google.com"))
]));
di.registerLazySingleton<NetworkInfo>(() => NetworkInfoImpl(di()));
@flutterdevuz
⚡7👍1
Где в Яндексе есть Flutter?
Недавно прошедший внутренний митап ознаменовал новую веху — в Яндексе появилось Flutter-комьюнити!
На митапе отлично повеселились, а заодно провели инвентаризацию команд, использующих Flutter — записывайте😯
1. Про — iOS | Android
2. Драйв — iOS | Android
3. Практикум — iOS | Android
4. Маршрутизация — iOS | Android
5. Афиша — iOS | Android
6. Авто.ру Бизнес — iOS | Android
7. Заправки — iOS | Android
8. Смена — iOS | Android
9. Маркет ПВЗ — iOS | Android
Ещё есть несколько мест, где Flutter встроен в Яндекс Go. Ну и на десерт. В десктопном Яндекс Браузере многие части UI — на Flutter😎
Ну чисто чтобы у вас не было сомнений по поводу количества продуктовых Flutter-команд в Яндексе☕️
https://t.me/flutterbro
Недавно прошедший внутренний митап ознаменовал новую веху — в Яндексе появилось Flutter-комьюнити!
На митапе отлично повеселились, а заодно провели инвентаризацию команд, использующих Flutter — записывайте
1. Про — iOS | Android
2. Драйв — iOS | Android
3. Практикум — iOS | Android
4. Маршрутизация — iOS | Android
5. Афиша — iOS | Android
6. Авто.ру Бизнес — iOS | Android
7. Заправки — iOS | Android
8. Смена — iOS | Android
9. Маркет ПВЗ — iOS | Android
Ещё есть несколько мест, где Flutter встроен в Яндекс Go. Ну и на десерт. В десктопном Яндекс Браузере многие части UI — на Flutter
Ну чисто чтобы у вас не было сомнений по поводу количества продуктовых Flutter-команд в Яндексе
https://t.me/flutterbro
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1🤬1
Forwarded from UzGeeks Community
Assalom alaykum!!!
UzGeeksʼda Mobile kuni!
📌 5-aprel, shanba kuni Najot ta'lim, Chimboy filialida "UzGeeks Community April2025 Mobile Day Meetup" boʻlib oʻtadi.
⭐️ MeetUpʼda quyidagi spikerlar ishtirok etadi:
1️⃣ Flutterda backend imkoniyatlari bormi? Dart dasturlash tili ushbu holatga tayyormi?
✨ Azizbek Kodirov (Flutter Developer @ Thinkland)
2️⃣ Dev, Staging, Production: Flutter Flavorlar bilan ishlash
✨ Madina Agzamova (Mobile Developer @ UIC Group)
3️⃣ Ilovangiz tarmoq jihatdan yaxshi himoyalanganmi? Interceptorlar bilan mustahkam ilovalar yarating
✨ Jahongir Qo'ziboyev (JAYSON KHAN) (Flutter Developer @ UIC Group)
🔄 Meetup odatiy ravishda bepul boʻlib, soat 14:00 da boshlanadi, unda qatnashish uchun UzGeeks.uz saytida roʻyxatdan oʻtish kerak.
📍Manzil: Najot ta'lim, Chimboy filliali
🎙Hamkorlar:
➡️ Najot ta'lim
➡️ Oʻzbekiston Respublikasi Raqamli texnologiyalar vazirligi;
➡️ Raqamli ta'limni rivojlantirish markazi;
➡️ Thinkland.
Sayt | Guruh | Kanal | Facebook
💫 Qo'llab quvvatlash uchun
UzGeeksʼda Mobile kuni!
📌 5-aprel, shanba kuni Najot ta'lim, Chimboy filialida "UzGeeks Community April2025 Mobile Day Meetup" boʻlib oʻtadi.
⭐️ MeetUpʼda quyidagi spikerlar ishtirok etadi:
1️⃣ Flutterda backend imkoniyatlari bormi? Dart dasturlash tili ushbu holatga tayyormi?
✨ Azizbek Kodirov (Flutter Developer @ Thinkland)
2️⃣ Dev, Staging, Production: Flutter Flavorlar bilan ishlash
✨ Madina Agzamova (Mobile Developer @ UIC Group)
3️⃣ Ilovangiz tarmoq jihatdan yaxshi himoyalanganmi? Interceptorlar bilan mustahkam ilovalar yarating
✨ Jahongir Qo'ziboyev (JAYSON KHAN) (Flutter Developer @ UIC Group)
🔄 Meetup odatiy ravishda bepul boʻlib, soat 14:00 da boshlanadi, unda qatnashish uchun UzGeeks.uz saytida roʻyxatdan oʻtish kerak.
📍Manzil: Najot ta'lim, Chimboy filliali
🎙Hamkorlar:
➡️ Najot ta'lim
➡️ Oʻzbekiston Respublikasi Raqamli texnologiyalar vazirligi;
➡️ Raqamli ta'limni rivojlantirish markazi;
➡️ Thinkland.
Sayt | Guruh | Kanal | Facebook
💫 Qo'llab quvvatlash uchun
This media is not supported in your browser
VIEW IN TELEGRAM
Biz qovurildikmi?
Flutterflow kompaniyasi ham kelajak texnologiyalari bilan poyga o'ynashga tushgan.
2 haftacha avval u DreamFlow nomli yangi startupni ishga tushirdi.
DreamFlow - Tasavvur qiling va Yasang.
Promt asosida dastur (mobil ilovalari yoki web ilovalar) yaratadi. Kodlari esa generatsiyadan keyinoq qo'lingizda bo'ladi (Flutter kodlari)
Sinab ko'ring: https://dreamflow.com/
Manba: Shu yerda
@flutterdevuz
Flutterflow kompaniyasi ham kelajak texnologiyalari bilan poyga o'ynashga tushgan.
2 haftacha avval u DreamFlow nomli yangi startupni ishga tushirdi.
DreamFlow - Tasavvur qiling va Yasang.
Promt asosida dastur (mobil ilovalari yoki web ilovalar) yaratadi. Kodlari esa generatsiyadan keyinoq qo'lingizda bo'ladi (Flutter kodlari)
Sinab ko'ring: https://dreamflow.com/
Manba: Shu yerda
@flutterdevuz
🤯9⚡1
⚡3👍1
Yangi trend: Bu mening shaxsiy o'yinchog'im :)
Prompt:
@flutterdevuz
Prompt:
"Create image. Create a toy of the person in the photo. Let it be an action figure. Next to the figure, there should be the toy's equipment, each in its individual blisters. 1) a flutter logo 2) A vs code logo 3) xcode logo 4) android studio logo. Don't repeat the equipment under any circumstance. The card holding the blister should be strong orange. Also, on top of the box, write 'Muhammad Aziz' and underneath it, 'Flutter Developer'. The figure and equipment must all be inside blisters. Visualize this in a realistic way."
@flutterdevuz
🎉4🆒1
Forwarded from Techie's Blog
Flutterda Deeplink.
Deeplink - bu link (URL linkka o'xshash) bo'lib, foydalanuvchilarni dasturni faqat ochish yoki asosiy oynasiga emas balki uning malum oynasiga yo'naltiradi va bu sotuvni yoki foydalanuvchining qiziqishini yanada orttiradi.
Flutterda deeplinklarning 4 hil turi mavjud:
1. Custom Scheme (URL sxema).
buchetapp://product/pionovidnye-rozy-659 ko'rinishida bo'ladi. Bu yerdagi buchetapp - custom protocol bo'lib dastur tomonidan registratsiya qilinadi. Va bu usul faqat dastur o'rnatilgan bo'lsagina ishlaydi aks holda xatolik yoki hech narsa yuz bermaydi. Bundan tashqari bu usul havfsiz emas chunki boshqa bir dastur ham sizning custom protocolingizdan foydalanishi mumkin.
2. App Links (Andrid specific)
https://buchet.uz/en/product/pionovidnye-rozy-659 ko'rinishda bo'ladi va faqat Android uchun ishlaydi. Ushbu link Digital Asset Links orqali verifikatsiya qilingan bo'linishi kerak. Shuning uchun bu havfsiz. Ushbu usul ham faqat dastur o'rnatilgan holatdagina ishlaydi. Agar o'rnatilmagan bo'lsa mos ravishda websitega o'tib ham ketishi mumkin.
3. Unversal Link (iOS specific)
https://buchet.uz/en/product/pionovidnye-rozy-659 ko'rinishida bo'ladi va App Link bilan bir hil ishlaydi faqat iOS uchun ishlaydi. Agar dastur o'rnatilgan bo'lsa dastur ochiladi aks holda Safari orqali website ochiladi. Domen orqali apple-app-site-association fayl o'rnatilgan bo'lishi kerak.
4. Deferred Link (Android&iOS)
Ushbu usul barcha turdagi linklarni qo'llab quvvatlaydi va asosan marketing va reklamalar uchun ishlatiladi. Bu usulning ustunlik tomoni dastur o'rnatilmagan bo'lsa mos ravishda PlayMarket yoki AppStoredan yuklashga o'tkazadi va birinchi ochilishidayoq malum oynaga yo'naltiriladi. Bu orqali foydalanuvchini birinchi marttadayoq yo'naltirilgan oynaga o'tkazish taminlanadi. Buning uchun malum servislardan foydanalish mumkin. Masalan Firebase Dynamic Links (bu yildan qo'llab quvvatlash to'xtalinadi), Branch, Adjust yoki Facebook Meta.
Deeplink - bu link (URL linkka o'xshash) bo'lib, foydalanuvchilarni dasturni faqat ochish yoki asosiy oynasiga emas balki uning malum oynasiga yo'naltiradi va bu sotuvni yoki foydalanuvchining qiziqishini yanada orttiradi.
Flutterda deeplinklarning 4 hil turi mavjud:
1. Custom Scheme (URL sxema).
buchetapp://product/pionovidnye-rozy-659 ko'rinishida bo'ladi. Bu yerdagi buchetapp - custom protocol bo'lib dastur tomonidan registratsiya qilinadi. Va bu usul faqat dastur o'rnatilgan bo'lsagina ishlaydi aks holda xatolik yoki hech narsa yuz bermaydi. Bundan tashqari bu usul havfsiz emas chunki boshqa bir dastur ham sizning custom protocolingizdan foydalanishi mumkin.
2. App Links (Andrid specific)
https://buchet.uz/en/product/pionovidnye-rozy-659 ko'rinishda bo'ladi va faqat Android uchun ishlaydi. Ushbu link Digital Asset Links orqali verifikatsiya qilingan bo'linishi kerak. Shuning uchun bu havfsiz. Ushbu usul ham faqat dastur o'rnatilgan holatdagina ishlaydi. Agar o'rnatilmagan bo'lsa mos ravishda websitega o'tib ham ketishi mumkin.
3. Unversal Link (iOS specific)
https://buchet.uz/en/product/pionovidnye-rozy-659 ko'rinishida bo'ladi va App Link bilan bir hil ishlaydi faqat iOS uchun ishlaydi. Agar dastur o'rnatilgan bo'lsa dastur ochiladi aks holda Safari orqali website ochiladi. Domen orqali apple-app-site-association fayl o'rnatilgan bo'lishi kerak.
4. Deferred Link (Android&iOS)
Ushbu usul barcha turdagi linklarni qo'llab quvvatlaydi va asosan marketing va reklamalar uchun ishlatiladi. Bu usulning ustunlik tomoni dastur o'rnatilmagan bo'lsa mos ravishda PlayMarket yoki AppStoredan yuklashga o'tkazadi va birinchi ochilishidayoq malum oynaga yo'naltiriladi. Bu orqali foydalanuvchini birinchi marttadayoq yo'naltirilgan oynaga o'tkazish taminlanadi. Buning uchun malum servislardan foydanalish mumkin. Masalan Firebase Dynamic Links (bu yildan qo'llab quvvatlash to'xtalinadi), Branch, Adjust yoki Facebook Meta.
👍4⚡1
Forwarded from Flutter Friendly
Привет, с вами Роза, Flutter Dev Friflex👋 И сегодня мы немного погрузимся в магию FutureOr!
Представьте, вы создаете некий абстрактный класс с различными методами, но точно не знаете, будет ли реализация асинхронной или синхронной. Конечно, вы можете создать два метода или изощряться с разными подходами, но действительно ли это хорошее решение?
Лучше, если вы объявите метод, как FutureOr.
Звучит пока не очень понятно? Давайте разберемся на примерах.
Предположим, мы разрабатываем сервис, который получает данные. Одна реализация будет синхронной, другая — асинхронной:
Aбстрактный класс
⚙️ Когда же использовать FutureOr?
FutureOr — ваш спаситель, когда вам нужно абстрагироваться от того, является ли результат операции асинхронным или синхронным.
🔧 Как обрабатывать FutureOr?
Самый простой способ — использовать проверку типа с помощью is Future.
Да, такой вариант решения может показаться не самым элегантным. Ведь чрезмерное использование is Future может запутать логику и сделать код менее читаемым. Но в некоторых случаях, особенно при работе с абстракциями, это вполне рабочий и понятный подход.
У меня с работой так же. Иногда мне нужен await, чтобы подумать, а иногда все складывается супер. А у вас?
Представьте, вы создаете некий абстрактный класс с различными методами, но точно не знаете, будет ли реализация асинхронной или синхронной. Конечно, вы можете создать два метода или изощряться с разными подходами, но действительно ли это хорошее решение?
Лучше, если вы объявите метод, как FutureOr.
FutureOr<T> — это такой хитрый тип в Dart, который говорит: «Эй, результат моего метода может быть либо обычным значением типа T, либо Future<T>, если вдруг придется подождать».Звучит пока не очень понятно? Давайте разберемся на примерах.
Предположим, мы разрабатываем сервис, который получает данные. Одна реализация будет синхронной, другая — асинхронной:
import 'dart:async';
abstract class SomeService {
FutureOr<String> fetch();
}
class FirstImplService extends SomeService {
@override
Future<String> fetch() async {
await Future.delayed(Duration(seconds: 2));
return 'Данные из Future';
}
}
class SecondImplService extends SomeService {
@override
String fetch() {
return 'Простые данные';
}
}
Aбстрактный класс
SomeService объявляет метод fetch() с типом возвращаемого значения FutureOr<String>. Это значит, что fetch() может вернуть либо String, либо Future<String>.FutureOr — ваш спаситель, когда вам нужно абстрагироваться от того, является ли результат операции асинхронным или синхронным.
Самый простой способ — использовать проверку типа с помощью is Future.
Да, такой вариант решения может показаться не самым элегантным. Ведь чрезмерное использование is Future может запутать логику и сделать код менее читаемым. Но в некоторых случаях, особенно при работе с абстракциями, это вполне рабочий и понятный подход.
У меня с работой так же. Иногда мне нужен await, чтобы подумать, а иногда все складывается супер. А у вас?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🆒1
Forwarded from Sabohat K | Tech blog 🇵🇸 (Sabohat)
With every 20 line of code you add to a codebase, you are most likely introducing a new bug. That is, if you are an average skilled developer.
Less code, less bugs
Less code, less bugs
📌 Model va Entity – farqi nimada?
Ko‘pchilik dasturchilar bu ikki tushunchani chalkashtirib yuboradi. Aslida esa, ular arxitekturaning butunlay boshqa qatlamlariga tegishli!
👨💻 Entity - ma'lumotlar bazasi bilan ishlaydi
🧠 Model - UI va API qatlamida ishlatiladi
✅ Qachon qaysi birini ishlatish kerak?
✅ Mapper funksiyalar qanday yoziladi?
✅ Real Flutter misollar bilan tushuncha oling!
telegram kanalga a'zo bo'ling: @flutter_toolkits
📖 To‘liq maqola: Medium maqolamga o‘tish
#Flutter #CleanArchitecture #Dasturlash #ModelVsEntity
Ko‘pchilik dasturchilar bu ikki tushunchani chalkashtirib yuboradi. Aslida esa, ular arxitekturaning butunlay boshqa qatlamlariga tegishli!
👨💻 Entity - ma'lumotlar bazasi bilan ishlaydi
🧠 Model - UI va API qatlamida ishlatiladi
✅ Qachon qaysi birini ishlatish kerak?
✅ Mapper funksiyalar qanday yoziladi?
✅ Real Flutter misollar bilan tushuncha oling!
telegram kanalga a'zo bo'ling: @flutter_toolkits
📖 To‘liq maqola: Medium maqolamga o‘tish
#Flutter #CleanArchitecture #Dasturlash #ModelVsEntity
Medium
🧩 Model va Entity o‘rtasidagi farq: Dasturchilar uchun batafsil qo‘llanma
# 🧩 Model va Entity o‘rtasidagi farq: Dasturchilar uchun batafsil qo‘llanma
👍1🔥1
For a Flutter developer, the median number of web searches and website visits per day is typically:
🔍 Search Queries
👉 20–60 queries/day — due to:
Widget behaviors (ListView, Column, Stack, etc.)
Package usage (dio, flutter_bloc, go_router, etc.)
Platform-specific issues (iOS/Android quirks)
Build/CI errors
UI/UX customizations
Firebase, notifications, deep linking, etc.
🌐 Websites Visited
👉 10–30 sites/day, often including:
pub.dev (for packages)
Stack Overflow
GitHub (issues, repos)
Flutter docs (https://docs.flutter.dev)
Medium/Dev.to articles
Reddit/Hacker News or forums
YouTube (video tutorials)
Your own project’s repo or team wiki
Even experienced Flutter devs Google common things like flutter container full height, flutter dart format date, or flutter release apk size.
(Source - ChatGPT)
@flutterdevuz
🔍 Search Queries
👉 20–60 queries/day — due to:
Widget behaviors (ListView, Column, Stack, etc.)
Package usage (dio, flutter_bloc, go_router, etc.)
Platform-specific issues (iOS/Android quirks)
Build/CI errors
UI/UX customizations
Firebase, notifications, deep linking, etc.
🌐 Websites Visited
👉 10–30 sites/day, often including:
pub.dev (for packages)
Stack Overflow
GitHub (issues, repos)
Flutter docs (https://docs.flutter.dev)
Medium/Dev.to articles
Reddit/Hacker News or forums
YouTube (video tutorials)
Your own project’s repo or team wiki
Even experienced Flutter devs Google common things like flutter container full height, flutter dart format date, or flutter release apk size.
(Source - ChatGPT)
@flutterdevuz
docs.flutter.dev
Flutter documentation
Get started with Flutter. Widgets, examples, updates, and API docs to help you write your first Flutter app.