Flutterでは、関数やコンストラクタの引数が必須であることを示すためにrequired
と@required
という二つのアノテーションが使用されます。しかし、これらのアノテーションは異なる文脈で使われるため、それぞれの違いを理解することが重要です。
@required
@required
は、Dartのメタアノテーションで、名前付きパラメータが必須であることを示します。@required
を使用するには、meta
パッケージをインポートする必要があります。
import 'package:meta/meta.dart';
class MyWidget extends StatelessWidget {
final String title;
MyWidget({@required this.title});
// ...
}
上記の例では、title
パラメータに@required
アノテーションが付与されているため、MyWidget
のインスタンスを作成する際には、title
パラメータを指定する必要があります。
@required
は、Flutter 1.17以前のバージョンではよく使われていましたが、Dart 2.12以降ではrequired
キーワードが追加されたため、現在ではあまり使用されません。
required
Dart 2.12以降では、required
キーワードを使用して、名前付きパラメータが必須であることを示すことができます。required
キーワードは、Dartの言語機能の一部であるため、meta
パッケージをインポートする必要はありません。
class MyWidget extends StatelessWidget {
final String title;
MyWidget({required this.title});
// ...
}
この例でも、title
パラメータが必須であることが明示されています。MyWidget
のインスタンスを作成する際に、title
パラメータを指定する必要があります。
まとめ
@required
とrequired
は、Flutterで必須の名前付きパラメータを示すために使用されるアノテーションです。@required
はメタアノテーションで、Flutter 1.17以前のバージョンでよく使われていましたが、Dart 2.12以降ではrequired
キーワードが導入され、@required
の使用は推奨されません。required
キーワードはDartの言語機能であり、より簡潔で明確な方法で必須の名前付きパラメータを示すことができます。
コメント