🎃
[Dart/Flutter] FutureOr型とは
Flutterをいじっていると、FutureOrという型をたまに見かけます。Future型と何が違うのか、疑問に思ったため調べてみました。
FutureOr<T>とは
FutureOr<T>
はFuture<T>
またはT
を表す型です。
FutureOr<T>
で型チェックを行うと、Future<T>
とT
どちらも結果はtrue
になります。
String str = 'hoge';
Future<String> futureStr = Future.value('hoge');
print(str is FutureOr<String>); // true
print(futureStr is FutureOr<String>); // true
使用例
クラスの継承時なんかに使えます。
abstract class SuperClass {
// データを取得する関数を用意
FutureOr<String> fetchData();
}
上のクラスを継承する際、fetchData関数の戻り値はFuture<String>
型・String
型どちらでも定義ができます。
class SubClassA extends SuperClass {
// 戻り値をFuture<String>で定義
Future<String> fetchData() async => 'data';
}
class SubClassB extends SuperClass {
// 戻り値をStringで定義
String fetchData() => 'data';
}
Discussion