Monday, February 28, 2022

ফ্লাটার আর্কিটেকচার (Flutter Architecture)

 

ফ্লাটার  আর্কিটেকচার ) Flutter Architecture(

এই অধ্যায়ে আমরা ফ্লাটার ফ্রেমওয়ার্কের আর্কিটেকচার নিয়ে আলোচনা করতে যাচ্ছি। ফ্লাটার আর্কিটেকচার প্রধানত চারটি components নিয়ে গঠিত।

·         ফ্লাটার  ইঞ্জিন  ) Flutter Engine(

·         ফাউন্ডেশন লাইব্রেরি ) Foundation Library(

·         উইজেট ) Widgets(

·         ডিজাইন নির্দিষ্ট উইজেট ) Design Specific Widgets(

 

ফ্লাটার  ইঞ্জিন   )Flutter Engine(

এটি high-quality মোবাইল অ্যাপের জন্য একটি পোর্টেবল রানটাইম এবং প্রাথমিকভাবে C++ ভাষার উপর ভিত্তি করে তৈরি করা হয়েছে। এটি ফ্লাটার কোর লাইব্রেরি প্রয়োগ করে যার মধ্যে অ্যানিমেশন এবং গ্রাফিক্স, ফাইল এবং নেটওয়ার্ক I/O, প্লাগইন আর্কিটেকচার, অ্যাক্সেসিবিলিটি সাপোর্ট এবং ফ্লাটার অ্যাপ্লিকেশন ডেভেলপ করা, কম্পাইল করা এবং চালানোর জন্য একটি ডার্ট রানটাইম রয়েছে। নিম্ন-স্তরের গ্রাফিক্স রেন্ডার করতে Google এর ওপেন সোর্স গ্রাফিক্স লাইব্রেরি Skia লাগে ।

 

ফাউন্ডেশন লাইব্রেরি  )Foundation Library(

এটিতে একটি ফ্লাটার অ্যাপ্লিকেশন লেখার প্রাথমিক বিল্ডিং ব্লকগুলির জন্য প্রয়োজনীয় সমস্ত প্যাকেজ রয়েছে৷ এই লাইব্রেরিগুলো ডার্ট ভাষায় লেখা।

 

উইজেট  )Widgets(

ফ্লাটারে, সবকিছুই একটি উইজেট, যা এই ফ্রেমওয়ার্কের মূল ধারণা। ফ্লাটারে উইজেট মূলত একটি ইউজার ইন্টারফেস উপাদান যা অ্যাপটির ভিউ এবং ইন্টারফেসকে প্রভাবিত করে এবং নিয়ন্ত্রণ করে। এটি ব্যবহারকারী ইন্টারফেসের অংশের একটি অপরিবর্তনীয় বর্ণনা উপস্থাপন করে এবং এতে graphics, text, shapes, এবং animations অন্তর্ভুক্ত থাকে যা উইজেট ব্যবহার করে তৈরি করা হয়। উইজেটগুলি React components এর অনুরূপ।

ফ্লাটারে অ্যাপ্লিকেশনটি নিজেই একটি উইজেট যাতে অনেকগুলি সাব উইজেট থাকে। এর অর্থ হল অ্যাপটি শীর্ষ-স্তরের উইজেট এবং এর UI এক বা একাধিক চাইল্ড উইজেট ব্যবহার করে তৈরি করা হয়েছে, যা আবার সাব চাইল্ড উইজেট অন্তর্ভুক্ত করে। এই feature  টি আপনাকে খুব সহজে একটি জটিল ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে।

আমরা আগের অধ্যায়ে তৈরি হ্যালো ওয়ার্ল্ড উদাহরণ থেকে এটি বুঝতে পারি। এখানে, আমরা নিম্নলিখিত চিত্রের সাথে উদাহরণটি ব্যাখ্যা করতে যাচ্ছি।


উপরের উদাহরণে, আমরা দেখতে পাচ্ছি যে সমস্ত উপাদানগুলি উইজেট যা চাইল্ড উইজেট ধারণ করে। সুতরাং, ফ্লাটার অ্যাপ্লিকেশনটি নিজেই একটি উইজেট।

 

ডিজাইন নির্দিষ্ট উইজেট  )Design Specific Widgets(

ফ্লাটার ফ্রেমওয়ার্কে দুটি সেট উইজেট রয়েছে যা নির্দিষ্ট ডিজাইনের ভাষার সাথে সামঞ্জস্যপূর্ণ। এগুলি হল অ্যান্ড্রয়েড অ্যাপ্লিকেশনের জন্য Material Design এবং আইওএস অ্যাপ্লিকেশনের জন্য Cupertino Style.

 

অঙ্গভঙ্গি  )Gestures(

GestureDetector ব্যবহার করে Flutter-এ interaction  (কীভাবে শুনতে এবং প্রতিক্রিয়া জানাতে হয়) প্রদান করে। GestureDector হল একটি invisible  উইজেট, যাতে এর চাইল্ড উইজেটের tapping, dragging, এবং scaling interaction অন্তর্ভুক্ত থাকে। আমরা GestureDetector উইজেট দিয়ে কম্পোজ করে বিদ্যমান উইজেটগুলিতে অন্যান্য ইন্টারেক্টিভ বৈশিষ্ট্যগুলিও ব্যবহার করতে পারি।

 

রাজ্য ব্যবস্থাপনা  )State Management(

ফ্লাটার  উইজেট একটি বিশেষ উইজেট, StatefulWidget ব্যবহার করে তার অবস্থা বজায় রাখে। যখনই এর অভ্যন্তরীণ অবস্থা পরিবর্তিত হয় তখন এটি সর্বদা স্বয়ংক্রিয়ভাবে পুনরায় রেন্ডার করা হয়। পুরানো এবং নতুন উইজেট UI এর মধ্যে দূরত্ব গণনা করে পুনরায় রেন্ডারিং অপ্টিমাইজ করা হয় এবং শুধুমাত্র প্রয়োজনীয় জিনিসগুলি রেন্ডার করে যা পরিবর্তন হয়৷


স্তরসমূহ  ) Layers(

স্তরগুলি হল ফ্লাটার ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ ধারণা, যা জটিলতার পরিপ্রেক্ষিতে একাধিক বিভাগে বিভক্ত এবং উপরে-নীচ পদ্ধতিতে সাজানো হয়েছে। সর্বোচ্চ স্তরটি হল অ্যাপ্লিকেশনটির UI, যা Android এবং iOS প্ল্যাটফর্মের জন্য নির্দিষ্ট। দ্বিতীয় শীর্ষ স্তরে সমস্ত Flutter native  উইজেট রয়েছে। পরবর্তী লেয়ারটি হল রেন্ডারিং লেয়ার, যা ফ্লাটার অ্যাপে সবকিছু রেন্ডার করে। তারপরে, স্তরগুলি Gestures, foundation library, engine, এবং অবশেষে, core platform-specific কোডে নেমে যায়। নিচের চিত্রটি Flutter অ্যাপ ডেভেলপমেন্টের স্তরগুলিকে নির্দিষ্ট করে৷




আজ এ পর্যন্তই



Sunday, February 27, 2022

ফ্লাটার টিউটোরিয়াল (Flutter Tutorial)

 

ফ্লাটার টিউটোরিয়াল (Flutter Tutorial)

আমাদের Flutter টিউটোরিয়াল থেকে Flutter ফ্রেমওয়ার্কের বেসিক  এবং এডভান্স ধারণা পাবেন। Flutter হল একটি UI টুলকিট, যা একটি প্রোগ্রামিং ভাষা এবং সেঙ্গেল কোডবেস দিয়ে মোবাইল, ওয়েব এবং ডেস্কটপের জন্য দ্রুত, সুন্দর, natively অ্যাপ্লিকেশন তৈরি করা যায়এই ফ্রেমওয়ার্কটি বিনামূল্যে এবং ওপেন সোর্স। প্রাথমিকভাবে, এটি Google ডেভেলপ করেছে এবং এখন একটি ECMA standard দ্বারা পরিচালিত হয় । ফ্লাটারে অ্যাপতৈরি করার জন্য ডার্ট প্রোগ্রামিং ভাষা ব্যবহার করে।


ফ্লাটার কি? (What is Flutter?)

সাধারণভাবে, একটি মোবাইল অ্যাপ্লিকেশন তৈরি করা অত্যন্ত জটিল এবং চ্যালেঞ্জিং কাজ। অনেকগুলি ফ্রেমওয়ার্ক রয়েছে, যা মোবাইল অ্যাপ্লিকেশন তৈরি করার জন্য চমৎকার ফিচার প্রদান করে৷ মোবাইল অ্যাপস ডেভেলপ করার জন্য, অ্যান্ড্রয়েডে জাভা এবং কোটলিন ভাষার উপর ভিত্তি করে একটি নেটিভ ফ্রেমওয়ার্ক ব্যবহার করা হয়, যেখানে আইওএসঅবজেক্টিভ-সি/সুইফট ভাষার উপর ভিত্তি করে একটি ফ্রেমওয়ার্ক ব্যবহার করা হয়। সুতরাং, উভয় OS-এর জন্য অ্যাপ্লিকেশন তৈরি করতে আমাদের দুটি ভিন্ন ভাষা এবং ফ্রেমওয়ার্ক এর প্রয়োজন। বর্তমানে এই জটিলতা কাটিয়ে উঠতে, বেশ কিছু ফ্রেমওয়ার্ক চালু করা হয়েছে যা ডেস্কটপ অ্যাপের সাথে OS উভয়কেই সমর্থন করে। এই ধরনের ফ্রেমওয়ার্ক ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্ট টুল হিসাবে পরিচিত।

ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্ট ফ্রেমওয়ার্কের একটি কোড লেখার ক্ষমতা রয়েছে এবং বিভিন্ন প্ল্যাটফর্মে (Android, iOS, এবং Desktop) deploy করতে পারে। এটি ডেভেলপারদের অনেক সময় বাঁচায় এবং development efforts. ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্টের জন্য বেশ কিছু টুল available রয়েছে, যার মধ্যে রয়েছে ওয়েব-ভিত্তিক টুলস, যেমন 2013 সালে Drifty Co. থেকে Ionic, Adobe থেকে Phonegap, Microsoft থেকে Xamarin এবং Facebook থেকে React Native . এই ফ্রেমওয়ার্কগুলির প্রত্যেকটির মোবাইল শিল্পে সাফল্যের বিভিন্ন মাত্রা রয়েছে। সাম্প্রতিক সময়ে, Google মোবাইল অ্যাপ্লিকেশন তৈরি করার জন্য Flutter নামে ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক  তৈরি করেছে

Flutter হল একটি UI টুলকিট, যা একটি প্রোগ্রামিং ভাষা এবং সেঙ্গেল কোডবেস দিয়ে মোবাইল, ওয়েব এবং ডেস্কটপের জন্য দ্রুত, সুন্দর, natively অ্যাপ্লিকেশন তৈরি করা যায়এই ফ্রেমওয়ার্কটি বিনামূল্যে এবং ওপেন সোর্স। প্রাথমিকভাবে, এটি Google ডেভেলপ করেছে এবং এখন একটি ECMA standard দ্বারা পরিচালিত হয় । ফ্লাটারে অ্যাপতৈরি করার জন্য ডার্ট প্রোগ্রামিং ভাষা ব্যবহার করে। ডার্ট প্রোগ্রামিং অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন কোটলিন এবং সুইফটের মতো একই বৈশিষ্ট্য শেয়ার করে এবং জাভাস্ক্রিপ্ট কোডে ট্রান্স-কম্পাইল করা যেতে পারে

Flutter প্রধানত 2D মোবাইল অ্যাপের জন্য অপ্টিমাইজ করা হয়েছে যা Android এবং iOS উভয় প্ল্যাটফর্মে চলতে পারে। আমরা ক্যামেরা, স্টোরেজ, জিওলোকেশন, নেটওয়ার্ক, থার্ড-পার্টি SDK এবং আরও অনেক কিছু সহ পূর্ণ-বৈশিষ্ট্যযুক্ত অ্যাপ তৈরি করতেও এটি ব্যবহার করতে পারি।


ফ্লাটারকে কি অনন্য করে তোলে? (What makes Flutter unique?)

ফ্লাটার অন্যান্য ফ্রেমওয়ার্ক থেকে আলাদা কারণ এটি WebView বা ডিভাইসের সাথে পাঠানো OEM উইজেট ব্যবহার করে না। পরিবর্তে, এটি উইজেট আঁকতে নিজস্ব high-performance রেন্ডারিং ইঞ্জিন ব্যবহার করে। এটি তার বেশিরভাগ সিস্টেম যেমন animation, gesture এবং widgets  কে ডার্ট প্রোগ্রামিং ভাষায় প্রয়োগ করে যা বিকাশকারীদের সহজেই জিনিসগুলি পড়তে, পরিবর্তন করতে, প্রতিস্থাপন করতে বা অপসারণ করতে দেয়। এটি সিস্টেমের উপর ডেভেলপারদের দুর্দান্ত নিয়ন্ত্রণ দেয়।


ফ্লাটারের    বৈশিষ্ট্য (Features of Flutter)

Flutter  মোবাইল এবং ডেস্কটপ অ্যাপ তৈরি করার জন্য easy and simple methods প্রদান করে এবং rich set of material design and widgets. এখানে, আমরা মোবাইল ফ্রেমওয়ার্ক ডেভেলপের জন্য এর প্রধান বৈশিষ্ট্যগুলি নিয়ে আলোচনা করতে যাচ্ছি। 

Open-Source: ফ্লাটার হল মোবাইল অ্যাপ্লিকেশন ডেভেলপ করার জন্য একটি ফ্রি এবং ওপেন সোর্স ফ্রেমওয়ার্ক।

Cross-platform: এই বৈশিষ্ট্যটি ফ্লাটারকে একবার কোড লিখতে, বজায় রাখতে এবং বিভিন্ন প্ল্যাটফর্মে চালানোর অনুমতি দেয়। এটি ডেভেলপারদের সময়, প্রচেষ্টা এবং অর্থ সাশ্রয় করে।

Hot Reload: যখনই ডেভেলপার কোডে পরিবর্তন করেন, তখনই হট রিলোডের মাধ্যমে এই পরিবর্তনগুলি তাৎক্ষণিকভাবে দেখা যায়। এর অর্থ হল পরিবর্তনগুলি অবিলম্বে অ্যাপে দৃশ্যমান। এটি একটি খুব সহজ বৈশিষ্ট্য, যা ডেভেলপারদের তাত্ক্ষণিকভাবে বাগগুলি ঠিক করতে দেয়৷

Accessible Native Features and SDKs:  এই বৈশিষ্ট্যটি Flutter এর নেটিভ কোড, থার্ড-পার্টি ইন্টিগ্রেশন এবং প্ল্যাটফর্ম API-এর মাধ্যমে অ্যাপ ডেভেলপমেন্ট প্রক্রিয়াকে সহজ এবং আনন্দদায়ক করতে দেয়। সুতরাং, আমরা উভয় প্ল্যাটফর্মে সহজেই SDK গুলি অ্যাক্সেস করতে পারি৷

Minimal code: ফ্লাটার অ্যাপটি ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ দ্বারা তৈরি করা হয়েছে, যা JIT এবং AOT সংকলন ব্যবহার করে সামগ্রিক স্টার্ট-আপ সময়, কার্যকারিতা এবং কর্মক্ষমতাকে ত্বরান্বিত করতে। JIT ডেভেলপমেন্ট সিস্টেমকে উন্নত করে এবং একটি নতুন তৈরিতে অতিরিক্ত প্রচেষ্টা না করেই UI রিফ্রেশ করে।

Widgets:  ফ্লাটার ফ্রেমওয়ার্ক উইজেট অফার করে, যা কাস্টমাইজযোগ্য নির্দিষ্ট ডিজাইন তৈরি করতে সক্ষম। সবচেয়ে গুরুত্বপূর্ণভাবে, ফ্লাটারের    উইজেটের দুটি সেট রয়েছে: Material Design এবং Cupertino widgets যা সমস্ত প্ল্যাটফর্মে একটি ত্রুটি-মুক্ত অভিজ্ঞতা প্রদান করতে সহায়তা করে।


ফ্লাটারের   সুবিধা (Advantage of Flutter)

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

·         হট-রিলোড বৈশিষ্ট্যের কারণে এটি অ্যাপ ডেভেল প্রক্রিয়াটিকে অত্যন্ত দ্রুত করে তোলে। এই বৈশিষ্ট্যটি আমাদের কোড পরিবর্তন বা আপডেট করার অনুমতি দেয় যত তাড়াতাড়ি পরিবর্তন করা হয়।

·         এটি অনেক হ্যাং বা কাট ছাড়াই অ্যাপটি ব্যবহার করার মসৃণ এবং বিরামহীন স্ক্রলিং অভিজ্ঞতা প্রদান করে, যা অন্যান্য মোবাইল অ্যাপ ডেভেলপমেন্ট ফ্রেমওয়ার্কের তুলনায় অ্যাপ্লিকেশনগুলিকে দ্রুততর করে তোলে।

·         ফ্লাটার reduces করে  time  এবং efforts. আমরা জানি, ফ্লাটার অ্যাপগুলি ক্রস-প্ল্যাটফর্ম যাতে পরীক্ষকদের সবসময় একই অ্যাপের জন্য বিভিন্ন প্ল্যাটফর্মে একই সেট পরীক্ষা চালানোর প্রয়োজন হয় না।

·         এটির একটি চমৎকার ইউজার ইন্টারফেস রয়েছে কারণ এটি একটি design-centric widget, high-development tools,, উন্নত API এবং আরও অনেক বৈশিষ্ট্য ব্যবহার করে।

·         এটি একটি reactive framework এর মতো যেখানে ডেভেলপারদের ম্যানুয়ালি UI সামগ্রী আপডেট করার প্রয়োজন নেই।

·         এটি দ্রুত ডেভেলএবং ক্রস-প্ল্যাটফর্ম প্রকৃতির MVP (Minimum Viable Product) অ্যাপগুলির জন্য উপযুক্ত।


ফ্লাটারের    অসুবিধা (Disadvantages of Flutter)

আমরা আগে দেখেছি যে ফ্লাটারের     অনেক সুবিধা রয়েছে, তবে এর কিছু অসুবিধাও রয়েছে, যা নীচে দেওয়া হল।

·         ফ্লাটার একটি তুলনামূলকভাবে নতুন ভাষা যার স্ক্রিপ্ট রক্ষণাবেক্ষণের মাধ্যমে ক্রমাগত একীকরণ সমর্থন প্রয়োজন।

·         এটি SDK লাইব্রেরিতে খুব সীমিত অ্যাক্সেস প্রদান করে। এর অর্থ হল একটি মোবাইল অ্যাপ্লিকেশন তৈরি করার জন্য একজন ডেভেলপারের অনেক functionalities নেই। এই ধরনের functionalities ফ্লাটার ডেভেলপারদের নিজেদেরি তৈরি করতে হয়

·         Flutter অ্যাপস ব্রাউজার সমর্থন করে না। এটি শুধুমাত্র Android এবং iOS প্ল্যাটফর্ম সমর্থন করে।

·         এটি কোডিংয়ের জন্য ডার্ট প্রোগ্রামিং ব্যবহার করে, তাই একজন ডেভেলপারকে নতুন প্রযুক্তি শিখতে হবে। যাইহোক, ডেভেলপারদের জন্য এটি শেখা সহজ।


ফ্লাটার ইতিহাস (History of Flutter)

Flutter হল একটি বিনামূল্যের এবং ওপেন সোর্স UI সফ্টওয়্যার ডেভেলপমেন্ট কিট যা Google দ্বারা প্রবর্তিত হয়েছে৷ এটি অ্যান্ড্রয়েড, আইওএস, উইন্ডোজ এবং ওয়েবের জন্য অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। 2015 সালে ডার্ট ডেভেলপার সামিটে ফ্লাটারের   প্রথম সংস্করণ ঘোষণা করা হয়েছিল। এটি প্রাথমিকভাবে "স্কাই" নামে পরিচিত ছিল এবং এটি অ্যান্ড্রয়েড অপারেটিং সিস্টেমে চলতে পারতো। Flutter ঘোষণার পর, প্রথম Flutter Alpha সংস্করণ (v-0.06) প্রকাশিত হয়েছিল মে 2017 সালে ।

পরে, সাংহাইতে Google ডেভেলপার দিবসের মূল বক্তব্যের সময়, Google সেপ্টেম্বর 2018 -এ Flutter-এর দ্বিতীয় প্রিভিউ চালু করেছিল যেটি Flutter 1.0 সংস্করণের আগে শেষ বড় রিলিজ ছিল। 4 ডিসেম্বর, 2018 -এ, Flutter ফ্রেমওয়ার্কের প্রথম স্থিতিশীল সংস্করণ Flutter Live ইভেন্টে প্রকাশ করা হয়েছিল, Flutter 1.0 নির্দেশ করে। ফ্রেমওয়ার্কের বর্তমান স্থিতিশীল রিলিজ হল Flutter v1.9.1+hotfix.6 অক্টোবর 24, 2019-এ।


পূর্বশর্ত (Prerequisite)

ফ্লাটার গভীরভাবে শেখার আগে, আপনার অবশ্যই Dart programming, Android Studio এবং HTML, JavaScriptএবং  CSS-এর মতো ওয়েব স্ক্রিপ্টিং ভাষা সম্পর্কে ভালো ধারণা থাকতে হবে।


শ্রোতা (Audience)

আমরা এই টিউটোরিয়ালটি beginners এবং professionals দের  জন্য তৈরি করেছি যারা ফ্লাটার দিয়ে    ক্যারিয়ার গড়তে চায় বা নির্বিঘ্নে ফ্লাটারের    নিয়মগুলি শিখতে চায়। অনেকগুলি বিষয় উপলব্ধ রয়েছে যা আপনাকে সহজেই ফ্লাটার প্রযুক্তি শিখতে সাহায্য করবে।


সমস্যা (Problems)

আমরা আপনাকে আশ্বস্ত করছি যে আপনি আমাদের ফ্লাটার টিউটোরিয়ালের সাথে কোন সমস্যা পাবেন না। কিন্তু, যদি আপনি কোন ভুল খুঁজে পান, আপনি আমাদের মন্তব্য বিভাগে পোস্ট করতে পারেন


ধন্যবাদ 

আজ এ পর্যন্তই




ফ্লাটার অ্যাপ ডেভেলপমেন্টে বিগিনারদের জন্য গুরুত্বপূর্ণ উইজেটস

প্রথমে জেনে নেওয়া যাক, উইজেট আসলে কী?   - উইজেট হলো ফ্লাটারের বিল্ডিং ব্লক। অর্থাৎ, ফ্লাটার অ্যাপ্লিকেশনের যেকোনো কিছুই একটা উইজেট হিসেবে ত...