![見出し画像](https://assets.st-note.com/production/uploads/images/123892498/rectangle_large_type_2_4df61eed9a349ed1609ef98744ab6590.png?width=1200)
[Flutter]mixinを使ったサンプルコード
mixinとは
mixinは、あるクラスで定義されたメソッドやプロパティを、別のクラスでも再利用できるようにする仕組みです。
例えば、あるクラスが「泳ぐ」という機能を持っているとします。
mixinを使うと、他のクラスでも同じ「泳ぐ」機能を使えるようになります。
mixinを使ったシンプルなコード
下記のコードは、ミキシン(mixin)とクラスを使って、魚が泳ぐことができるというシンプルな例です。
mixin Swimmer {
String swim() {
return '泳ぐ';
}
}
class Fish with Swimmer {
}
void main(){
var fish = Fish();
print('魚は${fish.swim()}ことができます。');
}
主要な部分を説明します。
mixin Swimmer:
Swimmerという名前のミキシンを定義しています。ミキシンは、クラスに再利用可能なコードを追加するための仕組みです。
Swimmerミキシン内には、String swim()というメソッドが定義されています。このメソッドは文字列 '泳ぐ' を返します。つまり、魚が泳ぐことを表現するためのメソッドです。
class Fish with Swimmer:
Fish クラスは、Swimmer ミキシンを with キーワードを使用して結合(ミックスイン)しています。これにより、Fish クラスは Swimmer ミキシン内のコード(swim()メソッド)を継承します。つまり、魚は swim() メソッドを持つことができ、そのメソッドを呼び出すことができます。
void main():
main() 関数内では、Fish クラスから fish インスタンスを作成しています。
fish.swim() を呼び出して、魚が泳ぐことを示しています。このメソッド呼び出しの結果を文字列内で使用して、「魚は泳ぐことができます。」というメッセージを出力しています。
したがって、このコードは、Swimmer ミキシンを使用して魚が泳ぐことを表現し、main() 関数内でそれを実際に呼び出して、メッセージを表示しています。
2つのmixinを継承してみる
下記のコードは、ミキシン(mixin)とクラスを使って、アヒルが泳ぐことも歩くこともできるというシンプルな例です。
ポイントは、1つのクラスに2つのmixinを適用できることです。
mixin Swimmer {
String swim() {
return '泳ぐ';
}
}
mixin Walker {
String walk(){
return '歩く';
}
}
class Duck with Swimmer, Walker {
}
void main(){
var duck = Duck();
print('アヒルは${duck.swim()}ことも${duck.walk()}こともできます。');
}
このコードは、Swimmer ミキシンと Walker ミキシンを使用して、アヒルが泳ぐことと歩くことの両方を表現しています。