🧙

【Flutter/Dart】クラスについて

2022/07/03に公開

導入

クラス周りのいろいろなものについてまとめてみました。

abstract

宣言

abstract class Response {
//継承メソッド
bool get isSuccess;
}

class News implements(extends) Response {
 // ・・・コンストラクタ
 
 bool get isSuccess => true;
 
 final NewsModel news;
}

使い方

final Response response = newsApi.response();

if (response is News) {
  return response.news;
}

うまく使えるようになれば、今まで組むのに難儀していたロジックを組むことができます。

factory

class Model {
  // ・・・コンストラクタ
  final String answer;
  
  factory Model.init() {
    return Model(
      answer: 'kore yade',
    );
  }
  
  factory Model.a() {
    return Model(
      answer: 'A yan',
    );
  }
  
  factory Model.b() {
    return Model(
      answer: 'B yan',
    );
  }
  
}

クラスの初期値設定とかで使えたりします。

extension

enum Gohan {
  morning,
  lunch,
  dinner
}

extension ExtensionGohan on Gohan {
  String get timing {
    switch (this) {
      case Gohan.morning:
        return 'asa';
      case Gohan.lunch:
        return 'hiru';
      default:
        return 'ban';
    }
  }
}

クラスのファンクションを拡張できる。

mixin

宣言

mixin Bokujo {
 String get bokujo => 'Bokujo';
}

使い方

class OK with Bokujo {
 // OKBokujoという値が返却されます。
 String message() {
   'OK' + bokujo;
 }
}

クラス自体に部品化されたメソッドを装備できる。
しかもWithに関してはいくつもつけれるので、複雑なパターンにも使える。

最後に

abstract は結構blocと相性が良くて結構使っています。
mixinとかはアニメーションとかで使います。
Extensionとかもdouble、intとかを拡張したいとかにとかに使ってます。

なんかもっと色々あった気がするが思いついた時に追記しようと思います。

Discussion