[flutter] Error: The class ‘FileSystemEvent’ can’t be extended, implemented, or mixed in outside of its library because it’s a sealed class. の対処メモ

flutterでアプリ開発してたらエラーではまったのでその対応メモです。

なお開発環境は次の通りです。

  • Windows 10
  • flutter 3.22.0

事象

mockを更新しようと次のコマンドを実行すると

$ dart run build_runner build

以下のようなエラーが出て失敗しました。

Resolving dependencies in `E:\sample_project`...
Downloading packages...
Got dependencies in `E:\sample_project`.
Building package executable... (1.0s)
Failed to build build_runner:build_runner:
/C:/Users/User/AppData/Local/Pub/Cache/hosted/pub.dev/watcher-1.0.2/lib/src/constructable_file_system_event.dart:7:57: Error: The class 'FileSystemEvent' can't be extended, implemented, or mixed in outside of its library because it's a sealed class.
abstract class _ConstructableFileSystemEvent implements FileSystemEvent {
                                                        ^
Failed to build build_runner:build_runner:
/C:/Users/User/AppData/Local/Pub/Cache/hosted/pub.dev/watcher-1.0.2/lib/src/constructable_file_system_event.dart:7:57: Error: The class 'FileSystemEvent' can't be extended, implemented, or mixed in outside of its library because it's a sealed class.
abstract class _ConstructableFileSystemEvent implements FileSystemEvent {

原因

watcher 1.0.2を利用しているのが原因です。現時点の最新バージョンであるwatcher 1.1.0にバージョンを上げると解決しました。

対応方法

pubspec.lockで指定されているwatcherのバージョンを1.1.0に上げられればいいわけです。

pubspec.ymlでバージョンを固定していないなら、次のコマンドで手っ取り早くwatcherのバージョンだけ更新できます。

$ flutter pub upgrade watcher

更新後のpubspec.lockを確認すると、watcher 1.1.0に上がって問題のエラーが出なくなっていると思います。

参考

Watcher fails with `class 'FileSystemEvent' can't be extended`, for dart, not for flutter. · Issue #52570 · dart-lang/sdk
Commit: dart-lang/leak_tracker@4d2618b To repro run the test and see the build error: dart test /Users/polinach/_/leak_t...

コメント