ফ্লাটার: ভুমিকা

01 October 2023

1 min read

“সহজ কথায়, ফ্লাটার হলো গুগলের তৈরি এমন একটি সফটওয়্যার ডেভেলপমেন্ট টুলকিট যা 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) ব্যবহার করে। এটা আপনাকে পুরো প্রোগ্রামটা পুনরায় প্রথম থেকে শুরু করা ছাড়াই কোড আপডেট করতে সাহায্য করে।



কেনো ফ্লাটার ব্যবহার করবেন?

[webp-to-jpg output image]



১. ওপেন-সোর্স প্ল্যাটফর্ম (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)

[webp-to-jpg output image]



পর্যবেক্ষণ (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 প্রদান করার মাধ্যমে ফ্লাটারের কাঠামো নিশ্চিতভাবে অদূর ভবিষ্যতে অনেক নতুন ডেভেলপারকে উচ্চ-কর্মক্ষম এবং বৈশিষ্ট্য-পূর্ণ মোবাইল অ্যাপ্লিকেশন বিকাশ করতে সাহায্য করবে।
ধন্যবাদ!

Share this article

RELATED ARTICLES

টেকনোলজি না জানা কেউ কি DevOps শিখতে পারবে?  ||  Can A Non_IT Person Learn DevOps? (DevOps Guideline for Non-IT Person)

বর্তমান টেক দুনিয়ায় DevOps (Development and Operations) একটি জনপ্রিয় প্রফেশান হিসেবে গড়ে উঠেছে। DevOps মূলত একটি প্রসেস যা সফটওয়্যার ডেভেলপমেন্ট এবং আইটি অপারেশনস টিমের মধ্যে কম্বাইন করে, যার ফলে ফাস্ট, রিলায়েবল এবং ইফেক্টিভ সফটওয়্যার ডেলিভারি এনশিউর হয়। DevOps-এ ডেভেলপ মানে কেবল টেকনিক্যাল স্কিল নয়, বরং টিম কোলাবোরেশন, কালচারাল চেঞ্জ এবং ডেভেলপ প্রসেসের ইউজের স্কিলও এতে ইনক্লুডেট। আজ আলোচনা করা হবে, Non-IT বা টেকনোলজিক ফিল্ডে না থাকা কেউ কি DevOps শিখতে পারবে? এবং এই প্রফেশানে সাকসেসফুলল

20 October 2024

1 min read

DevOps শেখা কি সহজ? ||  Is DevOps Easy to Learn? (DevOps Learning Guideline)

বর্তমান টেক দুনিয়ায় DevOps একটি বহুল আলোচিত ও গুরুত্বপূর্ণ আইডিয়া। সফটওয়্যার ডেভেলপমেন্ট ও আইটি অপারেশনের মধ্যে একটি ব্রিজ হিসেবে DevOps-এর ইনোভেশন হয়েছে। এটি সফটওয়্যার ডেভেলমেন্ট ও ডেলিভারির স্পীড বাড়ানোর জন্য অটোমেটিক টুলস ও প্র্যাকটিসের মাধ্যমে কাজ করে। এই DevOps শেখা কি সহজ? এই প্রশ্নের উত্তর অনেকাংশে নির্ভর করে একজন লার্নারের ব্যাকগ্রাউন্ড, এক্সপেরিয়েন্স এবং শেখার ইন্টারেস্টের উপর।  আসুন এই বিষয়ে বিস্তারিত আলোচনার আগে আজকের টপিকগুলো জেনে নেই, DevOps কী? DevOps শেখার চ্যালেঞ্জ  শেখা

20 October 2024

1 min read

DevOps এর কোন ল্যাঙ্গুয়েজটি বেস্ট?  ||  Which Language is Best for DevOps? || (Best Language For DepOps)

DevOps বর্তমানে সফটওয়্যার ডেভেলপমেন্ট এবং আইটি অপারেশনসের কম্বাইন প্রসেস হিসেবে কাজ করছে। এর মূল উদ্দেশ্য হলো সফটওয়্যার ডেলিভারি প্রসেসকে ফাস্ট এবং কারেক্টলি কমপ্লিট করা, যেখানে ডেভেলপার এবং অপারেশন টিম কোলাবোরেটলি কাজ করে। DevOps প্রসেসে DevOps এর জন্য পারফেক্ট প্রোগ্রামিং ল্যাঙ্গুয়েজের সিলেক্ট করা অত্যন্ত গুরুত্বপূর্ণ কারণ এটি সিস্টেম অটোমেশন, কনফিগারেশন ম্যানেজমেন্ট, ইনফ্রাস্ট্রাকচার ম্যানেজমেন্ট এবং আরও বিভিন্ন কাজে হেল্পফুল হয়। DevOps-এর কাজের প্রসেসে ইউজ করার মতো বিভিন্ন প্রোগ্রামিং ল্

08 October 2024

1 min read

পাইথন কি বিগিনারদের জন্য শেখা সহজ? || Is Python Easy to Learn for Beginners || ( Python Guideline for Beginners)

প্রোগ্রামিংয়ের দুনিয়া বিগিনারদের জন্য অনেকটা কঠিন। প্রোগ্রামিংয়ে আগ্রহ থেকে ক্যারিয়ার হিসেবে অনেকেই প্রোগ্রামার হতে চায়। কিন্তু প্রোগ্রামার হওয়ার জার্নিটা এতো সহজ নয়। দিনের পর দিন কোডিং নিয়ে থাকতে থাকতে অনেকেই হাপিয়ে যায়। ঠিক তখন-ই বিগিনারদের এই কোডিংয়ের ঝামেলা থেকে চলে আসে পাইথন। প্রোগ্রামিং ল্যাঙ্গুয়েজের দুনিয়ায় সবচেয়ে সহজ প্রোগ্রামিং ল্যাঙ্গুয়েজ বলা হয় পাইথনকে। কিন্তু এই কথা কি আসলেই সত্যি?  * কেন পাইথন শেখা সহজ? ● পাইথনের ইংরেজি সিনট্যাক্স ● পাইথন লজিকে ফোকাস করে ● পাইথন ফ্রি-তে ইউজ করা

08 October 2024

1 min read

অনলাইন লাইভ স্কিল ডেভেলপমেন্ট প্ল্যাটফর্ম।

ডাউনলোড করুন ওস্তাদ অ্যাপ

কমিউনিটি -এর সাথে কানেক্টেড থাকতে