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.
Forwarded from Sabohat K | Tech blog 🇵🇸 (Sabohat)
Why Your App Feels Slow: The Top 4 Performance Killers
1) Network Latency & API Efficiency – Slow server responses or too many API calls make the app feel laggy.
2) Data Access & Storage Optimization – Poor database queries or repeated data fetches slow down performance.
3) Algorithm & Logic Efficiency – Inefficient code leads to delays, especially with large datasets or complex operations.
4) UI Rendering & Front-End Performance – Heavy rendering, unoptimized images, or layout shifts hurt responsiveness.
*The list items are prioritized in the order of impact
1) Network Latency & API Efficiency – Slow server responses or too many API calls make the app feel laggy.
2) Data Access & Storage Optimization – Poor database queries or repeated data fetches slow down performance.
3) Algorithm & Logic Efficiency – Inefficient code leads to delays, especially with large datasets or complex operations.
4) UI Rendering & Front-End Performance – Heavy rendering, unoptimized images, or layout shifts hurt responsiveness.
*The list items are prioritized in the order of impact
Milliy va ishonchli tizim: DON
"DON" qanday ishlaydi?
Yig'ilgan DON lar evaziga:
🏅 2 xonali kvartira
🏅 2 ta GENTRA
🏅 43 dyumlik 10 ta televizor...
... va ko'plab boshqa sovrinlarni yutib olishingiz mumkin.
Havolani bosing va DON yig'ishni boshlang:
BOSHLASH
@flutterdevuz
"DON" qanday ishlaydi?
- Sizga kunlik vazifalar beriladi, ularni bajarish evaziga mukofot sifatida DON taqdim qilinadi;
- Vazifalar turiga qarab yoki ko‘proq yoki kamroq DON taqdim qilinadi;
- DON qanchalik ko‘p bo‘lsa ularni sarflab yutuqli o‘yinda ishtirok etishingiz mumkin;
- DON ga har kunlik tashrif orqali ham DON mukofotlarini olishingiz mumkin va bu mukofotlar bir muddat o‘sib boradi;
Yig'ilgan DON lar evaziga:
🏅 2 xonali kvartira
🏅 2 ta GENTRA
🏅 43 dyumlik 10 ta televizor...
... va ko'plab boshqa sovrinlarni yutib olishingiz mumkin.
Havolani bosing va DON yig'ishni boshlang:
BOSHLASH
@flutterdevuz
⚡1👍1
Odatiy xodimlikdan texnologik biznes egasiga aylanish uchun sodda yo'l xaritasi:
1. Maqsadingizni aniqlang
O‘zingizga savol bering:
- Men o‘z mahsulotimni yaratmoqchimanmi? (masalan: mobil ilova, veb-sayt, SaaS)
- Yoki frilans, startap, xizmat ko‘rsatish agentligi ochmoqchimanmi?
- Yoki mavjud bozor muammosini texnologik yechim bilan hal qilmoqchimanmi?
Aniq maqsad – aniq harakatlarni paydo qiladi.
2. Muammo toping – g‘oya shu yerda ana o'sha yerda yashiringan bo'ladi
Texnologik biznes g‘oyadan emas, muammoni topishdan boshlanadi:
- Ishingizda yoki kundalik hayotingizda qanday muammolar bor?
- Odamlar nimadan norozi? Nega vaqt yoki pul yo‘qotishyapti?
- Bu muammoni hal qilish uchun qancha pul to‘lashmoqda?
Yaxshi g‘oya – bu hal qilinmagan muammoga yaxshi yechim hisoblanadi.
3. Ishlayotganingizda tayyorgarlik ko‘ring
Ishingizni biznesni boshlash uchun trampilin sifatida ko‘ring:
- Pul jamg‘aring (kamida 6-12 oylik xarajatlaringizga yetadigan)
- Tajriba oling (texnik ko‘nikmalar, loyiha yuritish, mijozlar bilan ishlash)
- Ilk mijoz yoki foydalanuvchini ishxonadayoq toping (shu muammo sizni o‘rab turgan muhitda bormi?)
4. Kichik loyiha yoki VMVP tayyorlang
Ilk bosqichda to‘liq mahsulot emas, minimum ishlaydigan mahsulot (MVP) yarating:
- Oddiy veb-sayt, Telegram bot, Google form, Notion sahifa ham bo‘lishi mumkin
- Maqsad: ilovangiz yoki xizmatingiz foydalimi yoki yo‘qmi, sinab ko‘rish
5. Foydalanuvchi/Mijoz to‘plashni o‘rganing
Texnologik biznes = texnologiya + mijoz. Har doim quyidagilarga e’tibor qarating:
- Qayerdan foydalanuvchi topasiz?
- Qanday qilib ularga xizmat yoki mahsulotingizni tushuntirasiz?
- Ular sizga to‘laydimi?
6. Parallel ravishda daromad topishni boshlang
Asosiy ishda ishlab turgan holda:
- Konsultatsiya
- Kichik ilova yoki bot orqali passiv daromad
*Frilans xizmatlar tavsiya etilmaydi!
Daromad kira boshlaganda ishdan chiqish uchun qulay fursat keladi. Bunda o'z ishxonangizni oldindan ogohlantirish tavsiya etiladi.
7. To‘liq o‘z biznesingizga o‘ting, to'liq!
Quyidagilar mavjud bo‘lsa, ishni tashlab o‘z yo‘lingizga o‘ting:
- Kamida 6 oy yashashga yetadigan jamg‘arma
- Ishlaydigan biznes model
- Barqaror mijozlar/foydalanuvchilar oqimi
- O‘z ustingizda ishlashga tayyorlik (sabab: endi hamma javobgarlik sizda)
Agar yuqoridagilardan bittasi sizda yo'qligini sezsangiz, iltimos qayta o'ylab ko'ring. O'zbekiston sharoitida yana bir zo'r imkoniyat bor. Bu sherikchilik, hozir ishlab turgan joyingizga hech bo'lmaganda 1% sherik bo'lish imkoniyati borligini tekshiring agar bo'lsa kompaniya ulushdori bo'ling, chunki yuqoridagi 7ta ko'rsatilgan talablar odatda kamida 10+ yil tajribaga egalarda uchrashi mumkin, bu degani 100% kafolat degani emas. Shu sababdan xizmat ko'rsatish sohasida imkon qadar o'z korxonanggizda bosh qaror qabul qiluvchilar qatoriga o'tish uchun harakat qiling.
Agar gap startap haqida ketayot bo'lsa, unga alohida keyingi postlarda to'xtalamiz.
Do'stlarga ulashing, ko'proq odamga manfaatli bo'lishi uchun harakatdaman - @AlisherAhmatovich
1. Maqsadingizni aniqlang
O‘zingizga savol bering:
- Men o‘z mahsulotimni yaratmoqchimanmi? (masalan: mobil ilova, veb-sayt, SaaS)
- Yoki frilans, startap, xizmat ko‘rsatish agentligi ochmoqchimanmi?
- Yoki mavjud bozor muammosini texnologik yechim bilan hal qilmoqchimanmi?
Aniq maqsad – aniq harakatlarni paydo qiladi.
2. Muammo toping – g‘oya shu yerda ana o'sha yerda yashiringan bo'ladi
Texnologik biznes g‘oyadan emas, muammoni topishdan boshlanadi:
- Ishingizda yoki kundalik hayotingizda qanday muammolar bor?
- Odamlar nimadan norozi? Nega vaqt yoki pul yo‘qotishyapti?
- Bu muammoni hal qilish uchun qancha pul to‘lashmoqda?
Yaxshi g‘oya – bu hal qilinmagan muammoga yaxshi yechim hisoblanadi.
3. Ishlayotganingizda tayyorgarlik ko‘ring
Ishingizni biznesni boshlash uchun trampilin sifatida ko‘ring:
- Pul jamg‘aring (kamida 6-12 oylik xarajatlaringizga yetadigan)
- Tajriba oling (texnik ko‘nikmalar, loyiha yuritish, mijozlar bilan ishlash)
- Ilk mijoz yoki foydalanuvchini ishxonadayoq toping (shu muammo sizni o‘rab turgan muhitda bormi?)
4. Kichik loyiha yoki VMVP tayyorlang
Ilk bosqichda to‘liq mahsulot emas, minimum ishlaydigan mahsulot (MVP) yarating:
- Oddiy veb-sayt, Telegram bot, Google form, Notion sahifa ham bo‘lishi mumkin
- Maqsad: ilovangiz yoki xizmatingiz foydalimi yoki yo‘qmi, sinab ko‘rish
5. Foydalanuvchi/Mijoz to‘plashni o‘rganing
Texnologik biznes = texnologiya + mijoz. Har doim quyidagilarga e’tibor qarating:
- Qayerdan foydalanuvchi topasiz?
- Qanday qilib ularga xizmat yoki mahsulotingizni tushuntirasiz?
- Ular sizga to‘laydimi?
6. Parallel ravishda daromad topishni boshlang
Asosiy ishda ishlab turgan holda:
- Konsultatsiya
- Kichik ilova yoki bot orqali passiv daromad
*Frilans xizmatlar tavsiya etilmaydi!
Daromad kira boshlaganda ishdan chiqish uchun qulay fursat keladi. Bunda o'z ishxonangizni oldindan ogohlantirish tavsiya etiladi.
7. To‘liq o‘z biznesingizga o‘ting, to'liq!
Quyidagilar mavjud bo‘lsa, ishni tashlab o‘z yo‘lingizga o‘ting:
- Kamida 6 oy yashashga yetadigan jamg‘arma
- Ishlaydigan biznes model
- Barqaror mijozlar/foydalanuvchilar oqimi
- O‘z ustingizda ishlashga tayyorlik (sabab: endi hamma javobgarlik sizda)
Agar yuqoridagilardan bittasi sizda yo'qligini sezsangiz, iltimos qayta o'ylab ko'ring. O'zbekiston sharoitida yana bir zo'r imkoniyat bor. Bu sherikchilik, hozir ishlab turgan joyingizga hech bo'lmaganda 1% sherik bo'lish imkoniyati borligini tekshiring agar bo'lsa kompaniya ulushdori bo'ling, chunki yuqoridagi 7ta ko'rsatilgan talablar odatda kamida 10+ yil tajribaga egalarda uchrashi mumkin, bu degani 100% kafolat degani emas. Shu sababdan xizmat ko'rsatish sohasida imkon qadar o'z korxonanggizda bosh qaror qabul qiluvchilar qatoriga o'tish uchun harakat qiling.
Agar gap startap haqida ketayot bo'lsa, unga alohida keyingi postlarda to'xtalamiz.
👍1👏1
Forwarded from Hacking for trolls
kocha-lang.uz kecha @shakhzodme aytgan til :)
Forwarded from Techie's Blog
#useful
🐙 Trending Repository: tdesign-flutter ⭐811
A Flutter UI components lib for TDesign. See components here
🐙 Trending Repository: tdesign-flutter ⭐811
A Flutter UI components lib for TDesign. See components here
Forwarded from Techie's Blog
Assalomu alekum hammaga.
go_router ishlatuvchilarni .popUntil() funksyaning yetishmasligi ko'pchilikni qiynasa kerak. Buning uchun yechim sifatida qulay extension yozdim balki foydasi tegib qolar:
go_router contextga bog'langani uchun unga ham qoshimcha yozib qo'yamiz:
p.s/ Boshqacha yechimlar bo'lsa albatta kutib qolaman.
go_router ishlatuvchilarni .popUntil() funksyaning yetishmasligi ko'pchilikni qiynasa kerak. Buning uchun yechim sifatida qulay extension yozdim balki foydasi tegib qolar:
extension GoRouterExtension on GoRouter {
void popUntilPath(String ancestorPath) {
while (routerDelegate.currentConfiguration.matches.last.matchedLocation != ancestorPath) {
if (!canPop()) {
return;
}
pop();
}
}
}
go_router contextga bog'langani uchun unga ham qoshimcha yozib qo'yamiz:
extension BuildContextExtensions on BuildContext {
void popUntil(String targetRoute) {
final router = GoRouter.of(this);
router.popUntilPath(targetRoute);
}
}
p.s/ Boshqacha yechimlar bo'lsa albatta kutib qolaman.
Tarmoqlarda iOS 26 dan "Liquid Glass" UI prinspida ishlashini aytib, Flutter (yoki krossplatformachilar) buni eplolmaydi deb "vahima" qilisha boshlaganida men:
😁3