0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dart3でfreezedビルドしたとき、変数の型がInvalidTypeとなってしまう問題を解決する

Posted at

はじめに

freezedはエンティティクラスやJSONパーサを自動生成するFlutter/Dartプラグインです。

freezedでコード生成すると変数の型がInvalidTypeとなることがある

このfreezedですが、Dart3以降(Flutter3.10.0以降)で、freezedで生成されるユニオンタイプを変数に持つようなクラスを定義すると、その型がdynamic型として生成されてしまいます。

例えば以下のようなコードでは、変数pagePageではなくInvalidTypeという型で生成されます。

import 'package:freezed_annotation/freezed_annotation.dart';

part 'test.freezed.dart';

// WidgetTypeのユニオンタイプPageを変数にもつクラス
// 変数pageはPageではなくInvalidTypeという型で生成される
@freezed
class SinglePage with _$SinglePage {
  factory SinglePage(Page page) = _SinglePage;
}

@freezed
class WidgetType with _$WidgetType {
  const factory WidgetType.page() = Page;
}

解決方法

analyzerのバージョンを5.12.0までダウングレードすることがとりあえずのワークアラウンドとなるようです。

pubspec.yamlで、以下のようanalyzerのバージョンをオーバーライドします。

dependency_overrides:
  analyzer: 5.12.0

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?