Open5

Dart関連の学習したこと

miyaken12miyaken12

Dartでのつらつらとどういう新しいことと学んだかつらつら備忘録として書いていきます

miyaken12miyaken12

シングルトンの書き方

class Singleton {
  static final Singleton _cache =
      Singleton._internal();

  factory Singleton() => _cache;

  Singleton._internal();
}

miyaken12miyaken12

ストアのURLを取ってくる

短縮URLで再現

class InAppURLs {
  static String get storeURL {
    if (Platform.isAndroid) {
      return 'https://play.google.com/store/apps/details?id=(アプリID)';
    } else if (Platform.isIOS) {
      return 'https://apps.apple.com/jp/app/id(アプリID)';
    } else {
      return '';
    }
  }
}
miyaken12miyaken12

適当な単語が連続する文字列生成

final longStr = List.generate(1, (index) => '長いテキスト')
      .toList()
      .reduce((string1, string2) => string1 + string2);
miyaken12miyaken12

引数の指定方法

Null Safety(Dart 2.12.0バージョン以降)

通常

void hogePrint(String hoge){
  print(hoge);
}

void main() {
  hogePrint('hoge');
}

名前付きパラメーター

  • 引数指定必須
void hogePrint({required String str}){
  print(str);
}

void main() {
  hogePrint(str: 'hoge');
}
  • デフォルトパラメーターあり
void hogeOrHugaPrint({String str = 'huga'}){
  print(str);
}

void main() {
  hogeOrHugaPrint(str: 'hoge'); // hoge
  hogeOrHugaPrint(); // huga
}
  • Null指定
void hogePrint({String? str}){
  print(str);
}

void main() {
  hogePrint(); // null
}

オプショナルパラメーター

void hogeOrHugaPrint([String? hoge, String huga = 'huga']){
  print(hoge); // hoge
  print(huga); // huga
}

void main() {
  hogeOrHugaPrint('hoge');
}
  • required はつけることはできない
  • 名前付きであり、オプショナルパラメーターであるという2重指定は無理?
  • 引数はNullかデフォルトパラメーターを指定する
  • オプショナルパラメーターと名前付きの引数を両方用意するのは厳しそう?