ডার্ট হলো টেক-জায়ান্ট গুগলের তৈরি একটি ক্লায়েন্ট অপটিমাইজড প্রোগ্রামিং ল্যাংগুয়েজ। বর্তমানে বহুল জনপ্রিয় ওপেন সোর্স সফটওয়্যার ডেভেলপমেন্ট কিট 'ফ্লাটার' এর মূল ভিত্তি হলো ডার্ট প্রোগ্রামিং ল্যাংগুয়েজ। এই Cheat-Sheet এর মাধ্যমে ডার্ট এর দৈনন্দিন প্রয়োজনীয় টপিকগুলোকে হাইলাইট করা হয়েছে।
৬৪-বিট পূর্ণসংখ্যা
int
৬৪-বিট ফ্লোটিং পয়েন্ট সংখ্যা
double
বুলিয়ান
bool
পরিবর্তনশীল টাইপ ও ভ্যালু
dynamic
অপরিবর্তনশীল টাইপ ও পরিবর্তনশীল ভ্যালু
var
রান-টাইমে গণনাযোগ্য অপরিবর্তনশীল টাইপ ও অপরিবর্তনশীল ভ্যালু
final
কম্পাইল-টাইমে গণনাযোগ্য অপরিবর্তনশীল টাইপ ও অপরিবর্তনশীল ভ্যালু
const
সিঙ্গেল কোটেশন
'Dart is cool'
ডবল কোটেশন
"Dart is cool"
স্ট্রিং ইন্টারপোলেশন
print('Flutter docs: ${flutter_docs_url}');
কনক্যাট
"Welcome, " + "back"
স্ট্রিং থেকে ইন্টিজার
int.parse('1')
স্ট্রিং থেকে ডবল
double.parse('3.1415')
ইন্টিজার থেকে স্ট্রিং
1.toString()
ডবল থেকে দশমিকের পর নির্দিষ্ট ঘর পর্যন্ত স্ট্রিং
3.1415.toStringAsFixed(2)
স্প্লিট করে স্ট্রিং থেকে লিস্ট
'Welcome back'.split(' ') // ['Welcome', 'back']
লিস্ট ফোল্ডিং
var x = [1,2,3].fold(5, (i, j) => i + j);
লিস্টের শেষে আরেকটা লিস্টের এলিমেন্টগুলি যোগ করা
[1, 2, 3].followedBy([4, 5])
একটি কন্ডিশন লিস্টের যেকোনো একটি এলিমেন্টকে স্যাটিসফাই করে কিনা
[71, 75, 81].any((elem) => elem > 80)
একটি কন্ডিশন লিস্টের সবগুলো এলিমেন্টকে স্যাটিসফাই করে কিনা
[71, 75, 81].every((elem) => elem > 80)
লিস্টকে দৈবভাবে পুনর্বিন্যস্ত করা
var list = [1, 2, 3]; list.shuffle();
সেট থেকে লিস্টে কনভার্শন
List.from({1, 2, 3})
লিস্ট এক্সপান্ড
[1, 3, 5].expand((i) => [i, ++i]).toList() // [1, 2, 3, 4, 5, 6]
লিস্ট থেকে প্রথম n সংখ্যক এলিমেন্ট নেয়া
[1, 3, 5, 7].take(2)
লিস্ট থেকে প্রথম n সংখ্যক এলিমেন্ট বাদে বাকিগুলো নেয়া
[1, 3, 5, 7].skip(2)
স্ট্রিং টু স্ট্রিং
var doraemon = {'type':'Robot', 'cameFrom':'22nd century', 'friend':'Nobita'};
ম্যাপকে এক্সেস করা
doraemon['type']
ম্যাপে একটি কী-(Key) এর অস্তিত্ব আছে কিনা
doraemon.containsKey('cameFrom')
ম্যাপে একটি ভ্যালুর অস্তিত্ব আছে কিনা
doraemon.containsValue('Nobita')
ম্যাপের সকল কী প্রিন্ট করা
doraemon.keys.forEach(print)
ম্যাপের সকল ভ্যালু প্রিন্ট করা
doraemon.values.forEach(print);
ম্যাপের কী এবং ভ্যালুগুলোর ওপর ইটারেশন
doraemon.forEach((k, v) => print('Key : $k, Value : $v'));
অ্যারো দিয়ে এক-লাইনে ফাংশান
int square(int n) => n*n;
পজিশনাল প্যারামিটার
bool isEven(int n) => n%2==0;
ঐচ্ছিক নেইমড প্যারামিটার
String chat(int positional, {int named}){ ... }
ঐচ্ছিক পজিশনাল প্যারামিটার
String chat(int mandatory, [int optional]){ ... }
ডিফল্ট ভ্যালু
String calculate({int a = 1}){ ... }
প্যারামিটার হিসেবে ফাংশান
void go(int Function(int) move) { ... }
বর্তমান তারিখ ও সময়
DateTime.now()
বর্তমান বছর, মাস, দিন
DateTime.now().year, DateTime.now().month, DateTime.now().day
বর্তমান সময়ঃ ঘন্টা, মিনিট, সেকেন্ড
DateTime.now().hour, DateTime.now().minute, DateTime.now().second
আজকের "দিন ও সময়" থেকে কয়েক "দিন ও সময়" পরে
DateTime.now().add(Duration(days: 3, hours: 9, minutes: 27))
একটি তারিখ আরেকটি তারিখের পরে কিনা
DateTime.utc(2020, 12, 16).isAfter(DateTime.utc(2019, 03, 26))
একটি তারিখের 'বার/দিন' চেক করা
DateTime.utc(2020, 03, 26).weekday == DateTime.sunday
দিনের হিসেবে দুটি তারিখের পার্থক্য
DateTime.utc(2020, 12, 16).difference(DateTime.utc(2020, 03, 26)).inDays
স্ট্রিং থেকে ডেট-টাইমে কনভার্ট করা
var parsedDate = DateTime.parse('1971-12-16 00:00:00.000');
প্রোজেক্টের সবগুলো প্যাকেজ ডাউনলোড করা
pub get
লোকাল ক্যাশ থেকে প্যাকেজ সংযুক্ত করা
pub get --offline
লোকাল ক্যাশে একটি প্যাকেজ সংযুক্ত করা
pub cache add <প্যাকেজের নাম> --version "<প্যাকেজের ভার্সন>"
সম্পাদনার কারণে প্যাকেজ মেরামতের জন্য পুনরায় ইনস্টল করা
pub cache repair
ব্যবহৃত প্যাকেজগুলোকে ট্রি আকারে প্রিন্ট করা
pub deps
ব্যবহৃত কোনো প্যাকেজের নতুন ভার্সন এসেছে কিনা খুঁজে দেখা
pub outdated
ব্যবহৃত প্যাকেজগুলোকে নতুন ভার্সনে আপগ্রেড করা
pub upgrade
সার্বজনীন উপলব্ধ প্যাকেজ সচল করা
pub global activate <প্যাকেজের নাম>
গতানুগতিক গাণিতিক অপারেটর
+, -, *, /, %, ~/
অ্যাসাইনমেন্ট অপারেটর
=, *=, /=, +=, -=, &=, ^=
সমীকরণের চিহ্ন বিপরীত করে দেয়
-expr
তুলনামূলক অপারেটর
==, !=, <, >, <=, >=
লজিক্যাল অপারেটর
&&, ||, !
ভ্যালু রিটার্ন করে ইনক্রিমেন্ট/ডিক্রিমেন্ট
x++, x--
ইনক্রিমেন্ট/ডিক্রিমেন্ট করে ভ্যালু রিটার্ন করা
++x, --x
টাইপ টেস্টিং অপারেটর
is, is!
টাইপ কাস্ট ও লাইব্রেরী প্রিফিক্স অপারেটর
as
নাল কিনা
??
বিট লজিক্যাল অপারেটর অথবা, বিটওয়াইজ অপারেটর
&, |, ^, <<, >>
তুলনা করা
'abc'.compareTo('def')
একটি স্ট্রিং এর মধ্যে একটি অক্ষর খোঁজা
'John Doe Jahangir'.contains('Doe')
একটি স্ট্রিং একটি নির্দিষ্ট অক্ষর দিয়ে শেষ হয় কিনা
'yoDevs'.endsWith('evs')
একটি স্ট্রিং একটি নির্দিষ্ট অক্ষর দিয়ে শুরু হয় কিনা
'yoDevs'.startsWith('yo')
একটি স্ট্রিং এর মধ্যে কোনো একটি বর্ণ/অক্ষর এর সর্বশেষ অবস্থান খোঁজা
'yoDevs'.lastIndexOf('D')
সাব-স্ট্রিং
'my_name_is_khan'.substring(11,15)
শুরু ও শেষে সব অতিরিক্ত ফাঁকা স্পেস সরিয়ে দেয়া
' cats are cute '.trim()
একটি বর্ণ/যতিচিহ্ন/অক্ষরকে স্ট্রিং এর সকল জায়গায় অন্য একটি বর্ণ/যতিচিহ্ন/অক্ষর দিয়ে প্রতিস্থাপন করা
'cats arE cutE'.replaceAll('E','e')
স্ট্রিং এর দৈর্ঘ্য
'cat'.length
একটি স্ট্রিং খালি কিনা
''.isEmpty
স্প্রেড অপারেটর
['apple', 'orange', ...otherList]
নাল স্প্রেড অপারেটর
['apple', 'orange', ...?otherList]
ম্যাপ করে ট্রান্সফর্মেশন
[79,84,99].map((marks) => marks + 1).toList() // [80, 85, 100]
এলিমেন্ট ফিল্টার করা
[79,84,99].where((marks) => marks>80) // (84, 99)
রিডিউস করা
[80,80,80].reduce((v, e) => v + e) // 240
কালেক্ট থ্রু কন্ডিশান
var grade = [if(isPublished) 'A+', 'B+']
কালেক্ট থ্রু ইটারেশন
[ 79, for (var i in [80, 81]) i , 82]
নির্দিষ্ট টাইপের ফাঁকা সেট
<int>{}
এডিশন/রিমুভ করা
add(10), remove(10)
লিস্ট থেকে সেটে এলিমেন্ট এডিশন
addAll([1, 2, 3, 4])
দুটি সেটের মধ্যে প্রতিচ্ছেদ করা
{1, 2, 3}.intersection({3, 4, 5})
দুটি সেটের সাধারণ উপাদানগুলো একত্রিত করা
{1, 2, 3}.union({3, 4, 5})
অপারেশন রিপ্রেজেন্টেশানঃ ফিউচার
Future<void> asyncTask() => Future.delayed(Duration(seconds: 2), () => print('It takes 2 seconds'));
অ্যাসিনক্রোনাস ফাংশান ও রিটার্ন টাইপ
Future<String> getMessage() async { ··· }
অ্যাসিনক্রোনাস ফাংশান কে কল করা
await getMessage()
অ্যাসিনক্রোনাস ফাংশানঃ এরোর হ্যান্ডলিং-১
Future<String> login() async { try{...} catch(error){...} }
অ্যাসিনক্রোনাস ফাংশানঃ এরোর হ্যান্ডলিং-২
Future<void> asyncTask() => Future.delayed(Duration(seconds: 2), () => throw '404 not found'));
হোয়াইল লুপ
while(condition) { ... }
ডু হোয়াইল লুপ
do { ... } while(condition);
কন্ডিশন-একশান ফর লুপ
for(condition) { ... }
লিস্ট এক্সেসের জন্য ফর লুপ
for(var elements in list) { ... }
ফর-ইচ লুপের সাথে আর্গুমেন্ট হিসেবে ফাংশান
[1, 2, 3, 4].forEach(print);
সেটকে ফর-ইচ দিয়ে এক্সেস করা
Set.from([1, 2, 3]).forEach((element) => print(element));
ক্লাস
class BirthCertificate { ... }
ক্লাস প্রপার্টিজ
class BirthCertificate { String name; int age; }
শর্ট ফর্মের ডিফল্ট কন্স্ট্রাক্টর
BirthCertificate(this.name, this.age);
নেইমড কন্স্ট্রাক্টর ও ডিফল্ট কন্স্ট্রাক্টরকে কল করা
BirthCertificate.newBornBaby(String onlyName) : this(onlyName, 0);
গেটার
String get getInfo { ... }
সেটার
set setInfo(String info) { ... }
এবস্ট্রাক্ট ক্লাস
abstract class Person { ... }
মিক্সিন ডেফিনিশান
mixin Engineer { ... }
এবস্ট্রাক্ট ক্লাস ইনহেরিট করা ও মিক্সিনের ব্যাবহার
class Programmer extends Person with Engineer { ... }
সমস্যা চিহ্নিত করতে
dart analyze
প্রস্তাবিত পরিবর্তনের পূর্বরূপ দেখতে
dart fix --dry-run
প্রস্তাবিত পরিবর্তনগুলি প্রয়োগ করতে
dart fix --apply
সমস্যা চিহ্নিতের পর ফিক্স করতে
dart fix
ডার্ট ইনস্টলেশন সম্পর্কিত তথ্যে দেখতে
dart info
ডার্টকে বিভিন্ন ফরম্যাটে কম্পাইল করতে
dart compile exe <DART_FILE>
নতুন প্রোজেক্ট তৈরি করতে
dart create <DIRECTORY>
এপিআই রেফারেন্স ডকুমেন্টেশন তৈরি করতে
dart doc <DIRECTORY>
ডার্ট সোর্স কোড ফরম্যাট করতে
dart format <DIRECTORY|DART_FILE>
ডার্ট প্রোগ্রাম রান করতে
dart run <DART_FILE>
যেকোনো কমান্ডের সাহায্য পেতে
dart help pub outdated