ডেভসংকেত

ডার্ট প্রোগ্রামিং

ডার্ট হলো টেক-জায়ান্ট গুগলের তৈরি একটি ক্লায়েন্ট অপটিমাইজড প্রোগ্রামিং ল্যাংগুয়েজ। বর্তমানে বহুল জনপ্রিয় ওপেন সোর্স সফটওয়্যার ডেভেলপমেন্ট কিট 'ফ্লাটার' এর মূল ভিত্তি হলো ডার্ট প্রোগ্রামিং ল্যাংগুয়েজ। এই 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 { ... }

    ডেভসংকেত সম্পর্কে

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

    স্পন্সর