ফ্লাটার: ভুমিকা
“সহজ কথায়, ফ্লাটার হলো গুগলের তৈরি এমন একটি সফটওয়্যার ডেভেলপমেন্ট টুলকিট যা cross-platform অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা হয়। ফ্লাটার অ্যাপে বিভিন্ন প্যাকেজ, plugins এবং widgets এর সিরিজ রয়েছে — তবে শুধু এগুলোই সব নয়।
একাধিক প্ল্যাটফর্ম পরের ব্যাপার, একটি প্ল্যাটফর্মে কোনো অ্যাপ চালু করা এবং চালানোর সবচেয়ে সহজ উপায় হলো ফ্লাটার। আপনি যতটা আশা করেন তার চেয়েও বেশি প্রোডাক্টিভ থাকা সম্ভব ফ্লাটারের এই সার্ভিসগুলোর মাধ্যমে— declarative, widget ভিত্তিক UI কাঠামো, reactive প্রোগ্রামিং এর জন্য ফার্স্ট ক্লাস সাপোর্ট, cross-platform abstractions এবং এর ভার্চুয়াল মেশিন যা কোড চেঞ্জের hot reloading সমর্থন করে।
একটা বিষয়, ফ্লাটার কোনো ভাষা নয়। ফ্লাটার প্রোগ্রামিং ভাষা হিসেবে Dart ইউজ করে। আপনি যদি Kotlin, Swift, Java বা Typescript জানেন আপনার কাছে Dart পরিচিত লাগবে কারণ এটি একটি object-oriented C-style ভাষা।
আপনি Dart কে native কোডে compile করতে পারেন যেটা একে আরো দ্রুত করে তোলে। এছাড়াও এটি hot relode বৈশিষ্ট্য আছে এমন একটি ভার্চুয়াল মেশিন (VM) ব্যবহার করে। এটা আপনাকে পুরো প্রোগ্রামটা পুনরায় প্রথম থেকে শুরু করা ছাড়াই কোড আপডেট করতে সাহায্য করে।
কেনো ফ্লাটার ব্যবহার করবেন?
১. ওপেন-সোর্স প্ল্যাটফর্ম (Open-Source Platform): এটা একটি ওপেন সোর্স-প্ল্যাটফর্ম যেটা যেকোনো উদ্দেশ্যে নতুন উদ্যোক্তারা ব্যবহার এবং স্টাডি করতে পারেন।
২. কাস্টম ডিজাইন এবং নেভিগেশন (Custom Design and Navigation): প্রতিবার ভিউ পরিবর্তন হলে এটি পুনরায় একটি UI আঁকে যা একটি দ্রুত এবং মসৃণ অ্যাপ ডেভেলপমেন্টের অভিজ্ঞতা দেয়।
৩. কুইক টেস্টিং এবং হট রিলোড (Quick testing and hot reload): ফ্লাটার ব্যবহারের সময়, কোডবেসে আপনি যেই পরিবর্তন করেছেন তা দেখার জন্য অ্যাপ্লিকেশন রিফ্রেশ করা লাগবেনা।
৪. সময় এবং মূল্য সাশ্রয়ী (Time and Cost-effective): অ্যান্ড্রয়েড এবং iOS উভয়ের জন্য এর একক কোডবেস প্রোগ্রামিং ফিচার ডেভেলপারদের অনেক সময় বাঁচায় এবং একে সুপার ফ্রেন্ডলি করে তোলে।
৫. চিত্তাকর্ষক এবং কাস্টমাইজড উইজেট (Impressive and Customized Widgets): ডেভেলপাররা তাদের অ্যাপ্লিকেশনের জন্য কেমন লেআউট চান এবং কিভাবে কম সময়ে একটি সফল অ্যাপ্লিকেশন তৈরি করতে চান সেসব বিষয়ে তাদের অনেক নিয়ন্ত্রণ দেওয়া হয়।
৬. ডার্ট ভাষা (Dart Language): ফ্লাটারের সেরা অংশগুলোর মধ্যে একটি হলো এটি Dart ভাষা ব্যবহার করে যেটা অসাধারণ গতি ও কর্মক্ষমতা সম্পন্ন এবং সবচেয়ে সহজ প্রোগ্রামিং ভাষাগুলোর একটি।
৭. কোড শেয়ারিং সহজ (Ease of code sharing): একবার ফ্লাটারে কোড লেখা হয়ে গেলে এর প্রায় ৯৫% বারবার ব্যবহার করা যায়।
৮. অবজেক্ট ওরিয়েন্টেশন (Object Orientation): বিদ্যমান (native) অ্যাপ ডেভেলপমেন্টের একটি প্রধান সমস্যা যা ফ্লাটার সমাধান করে দেয় তা হলো দৃশ্যমান User Experience (UI) তৈরি করে। ফ্লাটার অবজেক্ট ভিত্তিক উন্নয়নের ওপর নির্ভর করে।
৯. প্রচন্ড কর্মক্ষম (Super Productive): ডেভেলপাররা তাদের অ্যপ্লিকেশনের লেআউট কেমন চান এবং কিভাবে অল্প সময়ে সফল অ্যাপ্লিকেশন তৈরি করতে চান তার ওপর তাদের নিয়ন্ত্রণ দেওয়া হয়।
১০. কমিউনিটি সাপোর্ট এবং দলিল রচনা (Community Support and Documentation): React এবং Iconic এর তুলনায় ফ্লাটারের কমিউনিটি বেশ ছোট।
কেন বিভিন্ন কোম্পানি ফ্লাটার ব্যবহার করছে?
আজকাল মূলত তিনটি কারণে কোম্পানিগুলো তাদের development stack এ cross-platform সমাধানগুলো বিবেচনা করে:
• দ্রুত উন্নয়ন (Faster Development): একটি একক কোডবেসে কাজ করা।
• কম খরচ (Lower cost): অনেকগুলোর পরিবর্তে একটি প্রজেক্ট বজায় রাখা। (N সংখ্যক প্ল্যাটফর্মের জন্য N সংখ্যক প্রজেক্ট)
• ধারাবাহিকতা (Consistency): যেকোনো প্ল্যাটফর্মে একই UI এবং কার্যকারিতা।
• বাজারে দ্রুত।
• প্রতিটি প্রয়োজনের জন্য প্লাগইন (plugin)।
• আরো ভালো ডিজাইন এবং কাস্টমাইজেশন (customization)।
ফ্লাটারের প্রথম প্রয়োগ (Flutter First Application)
পর্যবেক্ষণ (Observation):
• এই উদাহরণটি একটি Material অ্যাপ তৈরি করে। Material হলো একটি visual ডিজাইন ভাষা যা মোবাইল এবং ওয়েবের জন্য আদর্শ। ফ্লাটার Material widgets এর একটি সমৃদ্ধ সেট অফার করে। আপনার pubspec.yaml ফাইলের ফ্লাটার অংশে একটি use-material-design: true entry থাকা ভালো। এটা আপনাকে Material এর আরো উপাদান ব্যবহার করার অনুমতি দিবে, যেমন: তাদের predefined icons এর সেট।
• অ্যাপটি StatelessWidget কে প্রসারিত করে, যেটা অ্যাপটিকেই একটি widget এ পরিণত করে। ফ্লাটারে alignment, padding এবং layout-সহ প্রায় সবকিছুই একটি widget.
• Material লাইব্রেরির Scaffold widget মূল Material ডিজাইনের দৃশ্যমান লেআউট তৈরি করে এবং একটি default app bar ও একটি body property প্রদান করে যেটা home screen এর জন্য widget tree কে ধরে রাখে।
• একটি widget এর প্রধান কাজ হলো একটি build () পদ্ধতি প্রদান করা যেটা অন্যান্য lower-level widget এর পরিপ্রেক্ষিতে কিভাবে widget টি প্রদর্শন করা হবে তা বর্ণনা করে।
• এই উদাহরণটির মূল অংশে একটি Center widget রয়েছে যেটার মধ্যে একটি Text child widget রয়েছে। Center widget টি এর widget subtree কে screen এর কেন্দ্রে সারিবদ্ধ করে।
ফ্লাটারের সীমাবদ্ধতা (Limitations of Flutter)
১. টিভি, ঘড়ি, গাড়ি (TVs, Watches, Cars)
আপনি tvOS, watchOS, CarPlay অথবা Android Auto এর জন্য অ্যাপ তৈরি করতে ফ্লাটার ব্যবহার করতে পারবেন না।
প্রভাব? এই প্ল্যাটফর্মগুলোকে টার্গেট করার জন্য আপনাকে বিদ্যমান (native) কোড বা একটি বিকল্প কাঠামো ব্যবহার করতে হবে।
২. ভেক্টর গ্রাফিক্স এবং অ্যানিমেশন (Vector graphics and animations)
ভেক্টর ফরম্যাটের জন্য সাপোর্ট নিখুঁত না। SVG প্যাকেজ বেশিরভাগ ক্ষেত্রে কাজ করে, কিন্তু মাঝেমধ্যে সমস্যা হয়।
প্রভাব? বর্তমান plugin গুলোর সাথে কিছু ফাইল সঠিকভাবে render হয় না। বিকল্প হলো 2Dimension's Flare.
৩. Dart থেকে সরাসরি বিদ্যমান API গুলোকে কল করা (Directly calling Native APIs from Dart)
ফ্লাটার native platform API গুলোর সাথে যোগাযোগ করতে পারে কিন্তু সরাসরি নয়।
প্রভাব? প্রচলিত পরিস্থিতিগুলোতে native API গুলোর সাথে যোগাযোগ করার জন্য আপনাকে native swift বা java/kotlin কোড লিখতে হবে।
৪. বিদ্যমান প্ল্যাটফর্ম ভিউগুলো (Native Platform Views)
কখনো কখনো আপনাকে native UI এর উপাদানগুলো ব্যবহার করতে হবে, যেমন: ম্যাপ এবং ওয়েব ভিউ। ফ্লাটার এগুলো বসাতে সহায়তা করে কিন্তু এগুলো শুধু প্রিভিউতে রয়েছে এবং কিছু সমস্যাও রয়েছে।
প্রভাব? সবচেয়ে জনপ্রিয় সমস্যাগুলোর মধ্যে রয়েছে Google Maps plugin, WebView plugin এবং platform views.
৫. কোড পুশিং (Code Pushing)
এটা ডেভেলপারদের মুহূর্তের মধ্যে patch গুলোকে পুশ করতে অনুমতি দেয় + ক্রমাগত এক্সপান্ড + কোনো অতিরিক্ত নতুন রিলিজ। কিন্তু ফ্লাটার এটা সাপোর্ট করেনা।
প্রভাব? ফ্লাটার অ্যাপের সকল আপডেটকে স্ট্যান্ডার্ড অ্যাপ স্টোর রিলিজ প্রক্রিয়ার মধ্যে দিয়ে যেতে হবে, যেটা অনেক সময় নেয়।
সবশেষে বলা যায়, ফ্লাটারের কাঠামো সত্যিকারের platform-independent উপায়ে মোবাইল অ্যাপ্লিকেশন তৈরির জন্য চমৎকার কাঠামো প্রদান করার মাধ্যমে দারুণ একটি কাজ করে। ডেভেলপমেন্ট প্রক্রিয়ার সরলতা, মোবাইল অ্যাপ্লিকেশনের উচ্চ কর্মক্ষমতা, Android এবং iOS উভয় প্ল্যাটফর্মের জন্য সমৃদ্ধ এবং প্রাসঙ্গিক user interface প্রদান করার মাধ্যমে ফ্লাটারের কাঠামো নিশ্চিতভাবে অদূর ভবিষ্যতে অনেক নতুন ডেভেলপারকে উচ্চ-কর্মক্ষম এবং বৈশিষ্ট্য-পূর্ণ মোবাইল অ্যাপ্লিকেশন বিকাশ করতে সাহায্য করবে।
ধন্যবাদ!