[Flutter]Dart Error: error: import of dart:mirrors is not supported in the current Dart runtimeの対処法

これは結構トラップ的な話なのですが、Flutterのアプリを起動させると、こんなエラーが出て画面が固まって動かなくなってしまうことがあります。

E/flutter (23085): [ERROR:flutter/shell/common/shell.cc(199)] Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime

この状態でハマってしまった場合の対処法です。

(以下のStackOverFlowを参考にさせて頂きました)

 

JsonSerializableパッケージを「dev_dependencies」に移動させれば解決

これは、結論から言うと誰が悪さをしているのかというと、JsonをDartのクラスに変換してくれる「JsonSerializable」パッケージなんです。

このパッケージを、公式では「pubspec.yaml」ファイルの「dependencies」セクションに記述するよう記載があるのですが、これをやってしまうとダメな場合があるようなんです。

I assume that you want to use json_serializable for your own sourceCode creation. If this is the case you should have json_serializable: ^2.0.0 under the dev_dependencies.

Explanation

json_serializable does use dartlang/source_gen internally. source_gen in turn does reference dart:mirrors, which is not supported in flutter (as told in this post).

So long story in short: – through removing the dependency on json_serializable from your “build” dependencies you remove the dependency on mirrors which is stopping your flutterBuild.

つまり、「JsonSerializable」パッケージを使って自分のプロジェクトでコード生成を行っているような場合は、公式に記載の「dependencies」ではなくて「dev_dependencies」セクションに記述する必要があるようなんです。

(JsonSerializableが内部的に「source_gen」というコード生成パッケージを参照していて、その「source_gen」が「dart:mirrors」というパッケージを参照しているのだが、これがFlutterではサポートされていないためにエラーになったとのこと)

ですので、

1)「JsonSerializable」パッケージを「pubspec.yaml」ファイルの「dependencies」から「dev_dependencies」セクションに移動

Dependencies fall into one of two types. Regular dependencies are listed under dependencies:—these are packages that anyone using your package will also need. Dependencies that are only needed in the development phase of the package itself are listed under dev_dependencies.

2)「JsonSerializable」を使っているdartファイルでimport分を削除

すれば解消します。

(詳しくは、下の動画で解説していますので、よろしければご覧ください)

 

アバター

北川 博之(きーぼー)

みんなのプログラミング by Telulu LLC代表 大阪府生まれ。京都大学経済学部経済学科卒業。 2000年より、日本生命保険、ニッセイアセットマネジメント、パトナム・インベストメンツ(米国)で、日本株トレーダー・アナリスト、経営企画、システム開発等の業務に従事。主に日本株の売買執行・投資分析、経営計画の策定、海外投資家向け日本株営業、社内トレーディングシステム及び経理システムの開発等を行う。 2016年、合同会社てるる設立。スマホアプリプログラマーとして「新感覚脳トレアプリ・記憶戦隊オボエルンジャー」「Meisoー1番シンプルなマインドフルネス瞑想アプリ」をはじめとした、メンタルヘルス・知育系アプリを中心に4タイトル・計8本(Android・iOS)をリリース。 2017年、自身のこれまでの社会人経験・プログラミング経験・子育て経験を基に、プログラミングを通じて人々の人生を豊かにして、未来に希望の持てる明るい社会の実現に貢献したいとの想いから、プログラミング完全初心者と挫折経験のある人を支援する「プログラミング挫折撲滅プロジェクト・みんなのプログラミング by Telulu LLC」を設立し、プログラミングサポーター活動と心理カウンセリング活動を開始。これまでに3,000名を超える方のプログラミング挫折撲滅をサポート。

こんな記事も読まれています

みんプロにかける想い

  1. トランプ政権2期目に起こるIT業界激震予想(後編:ブロックチェーンによるインターネットの再民主化が行われる可能性)

  2. こんな無駄な苦労をするのはぼくで最後にしたい(ぼくがプログラミング講座をはじめたわけ)

  3. プログラミングを通じて「やわらかい世の中」を作りたい(ぼくがプログラミング講座をやっている本当の理由②)

  4. トランプ政権2期目に起こるIT業界激震予想(前編:スマホの世界の構造問題に荒療治が行われる可能性)

  5. プログラミングは手段の1つに過ぎない(目的は自分のアイデアを形にすること)

みんプロ作成アプリ




みんプロ代表の黒歴史


TOP