Flutter ဘာတွေ မလုပ်ပေးနိုင်ဘူးလဲ

Flutter ဟာ ကျွန်တော်တို့အတွက် Multi-platform တည်ဆောက်ရာမှာ အသက်ရှူချောင်စေတဲ့ Platform တစ်ခု ဖြစ်ပါတယ်။ ဒါပေမယ့် Native တွေ ရေးသလို မရနိုင်တဲ့ အရာတွေ Flutter မှာ ရှိနေပါတယ်။ အဲဒါတွေက ဘာတွေလဲ လေ့လာကြည့်ရအောင်

Native Platform APIs တွေကို Dart က တိုက်ရိုက် ခေါ်လို့ မရနိုင်ပါဘူး

Native Platform APIs တွေဖြစ်တဲ့ ဥပမာ – LocationManager လိုတွေကို Dart ကနေ တိုက်ရိုက်ခေါ်လို့ ရမှာမဟုတ်ပါဘူး။ ဒါပေမယ့် ဒီနေရာမှာ သတိထားဖို့ လိုတာ တစ်ခုက Xamarin တို့ NativeScript တို့နဲ့ သဘောတရား မတူပါဘူး။ အဲဒီမှာတွေက Language Binding ကို သုံးပြီး သူတို့ ရေးနည်းအတိုင်း လှမ်းခိုင်းလို့ရပါတယ်။

ကျွန်တော်တို့ Flutter မှာဆိုရင်တော့ Platform Channels ကို သုံးပြီး Java/Kotlin (သို့) Objective-C/Swift နဲ့ Native Platform APIs တွေကို ရေးရမှာပါ။ ဆိုလိုတဲ့ အဓိပ္ပါယ်က Native Platform APIs တွေကို သုံးချင်ရင်တော့ သူ့ Native Language တွေကို သိမှ ရမယ့် သဘော ဖြစ်ပါတယ်။

Native Platform Views မရနိုင်ပါဘူး

Flutter အနေနဲ့ ကျွန်တော်တို့ ရေးလိုက်တဲ့ View အားလုံးကို Skia ဆိုတဲ့ Library ကို အသုံးပြုပြီး Render ပြန်လုပ် ပြသပါတယ်။

Skia Graphic Engine

Flutter မှာ UI တွေ တည်ဆောက်မယ်ဆိုရင် ကျွန်တော်တို့ Android မှာ ရေးတာနဲ့ လုံးဝ ပုံစံမတူပါဘူး။ ဘာကြောင့် အဲဒီလို ကွဲပြားနေရသလဲဆိုရင် View ကို Skia Graphic Engine သုံးပြီး Render လုပ်ပြတာကြောင့်ပါ။ အဲဒီအတွက် Native မှာ သုံးနေတဲ့ UI တွေအတိုင်း သုံးလို့ရမှာ မဟုတ်ပါဘူး။ အဲဒီလို ဖြစ်နေတဲ့အတွက် WebView တို့ MapView တို့ အသုံးပြုရမှာ အခက်အခဲတွေ အများကြီး ရှိစေပါတယ်။ အဲဒါကြောင့် အခုအချိန်အထိ WebView Plugin တွေက Developer Preview အနေနဲ့ပဲ ရှိနေသေးတာပါ။ နောက်ပိုင်းတော့ အဲဒီအခက်အခဲတွေကို ကျော်လွှားနိုင်မယ် ထင်ပါတယ်။

Code Push လုပ်လို့မရပါဘူး

Code Push ဆိုတာကတော့ ပြင်ဆင်စရာရှိတာတွေကို App Release လုပ်စရာမလိုပဲ တိုက်ရိုပြောင်းလဲသွားအောင် ပြုလုပ်တဲ့ ပုံစံပါ။ Web Development ပုံစံနဲ့ ဆင်ပါတယ်။ ReactNative တို့မှာ ရပေမယ့် Flutter မှာ မရနိုင်ပါဘူး။

နောက်ပိုင်းမှာ ရလာမလား မပြောတတ်ပေမယ့် အခုအချိန်အထိတော့ မရသေးပါဘူး။ ပြောင်းလဲ ပြင်ဆင်စရာတွေ ရှိတယ်ဆိုရင် ပုံမှန်အတိုင်း App Release Process အတိုင်း သွားရမှာ ဖြစ်ပါတယ်။​

TVs, Watches နဲ့ ကားတွေအတွက် ရေးလို့မရပါဘူး

tvOS, watchOS, Android Auto တွေအတွက် အထောက်အပံ့ မရှိပါဘူး။ ရေးချင်တယ်ဆိုရင် Native နဲ့ ရေးမှပဲ ရပါလိမ့်မယ်။

C/C++ တွေနဲ့ ပေါင်းပြီး ရေးလို့မရပါဘူး

တစ်ခါတစ်လေမှာ လိုအပ်ကောင်းလိုအပ်မယ့် C/C++ တို့နဲ့ ပေါင်းစပ်ရေးသားချင်တယ်ဆိုရင် Flutter မှာ ရေးလို့ မရနိုင်ပါဘူး။

Ref: https://medium.com/flutter-community/what-flutter-cant-do-limitations-ed185c89fb61