DartではdynamicからStringやintなどの型へのキャストは自動的に行えるが、FutureからFutureやFutureなどへのキャストはエラーになる。
main(List<String> args) async {
print(await getBool());
}
Future<bool> getBool() {
return getDynamic();
}
Future<dynamic> getDynamic() {
return Future.value(true);
}
実行結果
Unhandled exception:
type 'Future<dynamic>' is not a subtype of type 'Future<bool>'
解決方法
Futureを取得する処理をawaitしてdynamicからの自動キャストとすると正しく処理できる。
void main(List<String> args) async {
print(await getBool());
}
Future<bool> getBool() async {
return await getDynamic();
}
Future<dynamic> getDynamic() {
return Future.value(true);
}
実行結果
true