Flutter-এ MaterialApp এবং CupertinoApp হলো দুটি ভিন্ন ধরনের অ্যাপ্লিকেশন উইজেট, যা Flutter অ্যাপ্লিকেশনের জন্য প্ল্যাটফর্ম-নির্ভর UI ডিজাইন করতে ব্যবহৃত হয়। MaterialApp মূলত Android এবং Material Design এর জন্য ব্যবহৃত হয়, যেখানে CupertinoApp iOS এর জন্য Cupertino স্টাইল ব্যবহার করে। নিচে এই দুটি উইজেটের বিস্তারিত ব্যবহার এবং পার্থক্য আলোচনা করা হলো।
1. MaterialApp
MaterialApp উইজেটটি Flutter এর Material Design থিম এবং উইজেটগুলির জন্য ব্যবহৃত হয়। এটি Android অ্যাপ্লিকেশনের জন্য উপযুক্ত এবং Google এর Material Design নির্দেশিকা অনুসরণ করে।
MaterialApp এর বৈশিষ্ট্য
- Material Design সাপোর্ট: MaterialApp-এ Flutter এর Material Design এর সমস্ত কম্পোনেন্ট (যেমন AppBar, FloatingActionButton, Drawer, BottomNavigationBar) ব্যবহার করা যায়।
- থিমিং সাপোর্ট: অ্যাপ্লিকেশনের জন্য কাস্টম থিম সেট করতে পারবেন (যেমন প্রাইমারি কালার, অ্যাকসেন্ট কালার, টেক্সট স্টাইল ইত্যাদি)।
- নেভিগেশন এবং রুটিং: MaterialApp-এ নেভিগেশন এবং রুটিং সহজে ম্যানেজ করা যায়।
- আন্তর্জাতিককরণ (i18n): MaterialApp আন্তর্জাতিককরণ এবং লোকালাইজেশনের জন্য ইন-বিল্ট সাপোর্ট প্রদান করে।
MaterialApp এর উদাহরণ
import 'package:flutter/material.dart';
void main() {
runApp(MyMaterialApp());
}
class MyMaterialApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Home Page'),
),
body: Center(
child: Text('Hello, MaterialApp!'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
),
),
);
}
}
MaterialApp এর গুরুত্বপূর্ণ প্রপার্টি
- title: অ্যাপ্লিকেশনের শিরোনাম নির্ধারণ করে।
- theme: অ্যাপ্লিকেশনের থিম সেট করতে ব্যবহৃত হয়।
- home: অ্যাপ্লিকেশনের প্রাথমিক (প্রথম) স্ক্রিন বা পৃষ্ঠা।
- routes: অ্যাপ্লিকেশনের বিভিন্ন রুট বা পেজের মেপিং সংরক্ষণ করে, যা নেভিগেশনের জন্য ব্যবহৃত হয়।
- initialRoute: অ্যাপ্লিকেশনের প্রথমে কোন রুট দেখানো হবে তা নির্ধারণ করে।
- locale: অ্যাপ্লিকেশনের ভাষা সেট করে।
2. CupertinoApp
CupertinoApp উইজেটটি iOS এর জন্য Cupertino ডিজাইন নির্দেশিকা অনুসরণ করে। এটি iOS-স্টাইলের অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয় এবং Apple এর ডিজাইন ফিলোসফি অনুসরণ করে।
CupertinoApp এর বৈশিষ্ট্য
- Cupertino ডিজাইন সাপোর্ট: CupertinoApp-এ Flutter এর Cupertino উইজেট (যেমন CupertinoNavigationBar, CupertinoButton, CupertinoTabBar) ব্যবহার করা যায়।
- iOS থিম: এটি iOS এর জন্য স্টাইল করা থিম এবং উইজেট প্রদান করে, যা ব্যবহারকারীদের জন্য iOS-সদৃশ অভিজ্ঞতা তৈরি করে।
- নেভিগেশন এবং রুটিং: MaterialApp এর মতো CupertinoApp-এও নেভিগেশন এবং রুটিং ম্যানেজ করা যায়।
- অ্যানিমেশন: iOS-স্টাইল অ্যানিমেশন এবং ট্রানজিশন সাপোর্ট করে, যা iOS এর সাথে সামঞ্জস্যপূর্ণ।
CupertinoApp এর উদাহরণ
import 'package:flutter/cupertino.dart';
void main() {
runApp(MyCupertinoApp());
}
class MyCupertinoApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoApp(
title: 'Cupertino App Example',
home: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Home Page'),
),
child: Center(
child: Text('Hello, CupertinoApp!'),
),
),
);
}
}
CupertinoApp এর গুরুত্বপূর্ণ প্রপার্টি
- title: অ্যাপ্লিকেশনের শিরোনাম নির্ধারণ করে।
- theme: iOS-স্টাইল থিম সেট করতে ব্যবহৃত হয় (যদিও এটি MaterialApp এর মতো থিমিং সাপোর্ট দেয় না)।
- home: প্রাথমিক স্ক্রিন বা পৃষ্ঠা, যা CupertinoPageScaffold বা অন্য Cupertino উইজেটের মাধ্যমে ডিফাইন করা হয়।
- routes: বিভিন্ন পৃষ্ঠার মেপিং সংরক্ষণ করে, নেভিগেশনের জন্য ব্যবহৃত হয়।
- locale: অ্যাপ্লিকেশনের ভাষা এবং লোকাল সেটিংস নির্ধারণ করে।
MaterialApp এবং CupertinoApp এর পার্থক্য
| বৈশিষ্ট্য | MaterialApp | CupertinoApp |
|---|---|---|
| ডিজাইন | Material Design (Android-স্টাইল) | Cupertino Design (iOS-স্টাইল) |
| উইজেটস | Material উইজেটস (AppBar, Button ইত্যাদি) | Cupertino উইজেটস (NavigationBar, Button ইত্যাদি) |
| থিমিং | Material থিমিং সাপোর্ট | সীমিত থিমিং সাপোর্ট, প্রধানত iOS স্টাইল |
| নেভিগেশন এবং রুটিং | নেভিগেশন এবং রুটিং সাপোর্ট | নেভিগেশন এবং রুটিং সাপোর্ট |
| অ্যানিমেশন | Material অ্যানিমেশন | iOS-স্টাইল অ্যানিমেশন সাপোর্ট |
| আন্তর্জাতিককরণ | সহজেই আন্তর্জাতিককরণ (i18n) সাপোর্ট করে | আন্তর্জাতিককরণ (i18n) সাপোর্ট করে |
কোনটি বেছে নেবেন?
- যদি আপনি Android বা Material Design অ্যাপ্লিকেশন তৈরি করতে চান, তবে MaterialApp ব্যবহার করা উচিত।
- যদি আপনি iOS-এর জন্য বিশেষ করে অ্যাপ্লিকেশন তৈরি করতে চান, তবে CupertinoApp বেছে নেওয়া উচিত।
আশা করি, MaterialApp এবং CupertinoApp সম্পর্কে এই আলোচনা আপনাকে Flutter অ্যাপ্লিকেশনের জন্য সঠিক উইজেট বেছে নিতে সাহায্য করবে।
Read more