FlutterでDriftを使うとColumnが使えなくなる件

2022/12/11に公開約1,700字

FlutterでUIを作っている時にColumnウィジェットを使おうとしたらエラーが出ました。
当たり前に使っているのにエラーが出て困惑してしまいました。
エラーメッセージからDriftが影響しているようです。
原因がわかったので調べて解決することができました。
エラーから解決までの流れを記録しておきます。

Driftを使っている状態でレイアウトのColumnウィジェットを使うと以下のエラーが出ました。
ちなみにエラーには赤い波線が引かれます。

エラーが出ているColumnクラスにマウスカーソルを合わせてみます。
そうすると2つのエラーメッセージが出てきます。

2つ目のエラーメッセージに注目します。
エラーメッセージを読むとDriftのソースコードdsl.dartとFlutterのソースコードbasic.dartの両方でクラス名Columnが使われているようです。
これで原因は分かりましたが解決方法が分かりません。
こんな時はググってみるべし!!
とりあえず適当と思われるキーワード「flutter column drift」で検索してみました。
検索結果はこちら⬇️

結論から言うと上から4つ目の検索結果を参考にしました。
理由はちょっと見にくいですがリンク元がmoorのGitHubのIssuesだったからです。
moorとはDriftの以前の名前です。
GitHubのIssuesであれば求めている結果に近い可能性が高いと考えました。
早速見てみましょう。

検索結果先の表題は「Column class clashes with Flutter」で直訳すると「コラムクラスがFlutterと衝突する」となります。
表題から見ても求めているもののようです。
ページを見ていくとすぐに解決策が見つかりました。

import 'package:moor_flutter/moor_flutter.dart' hide Column;

インポートしたdrift.darthide Columnを追加すれば良さそうです。
解決策を参考に以下のようにコードを追加してみます。

import 'package:drift/drift.dart' hide Column;

追加するとエラーの警告が消えました。
赤い波線も無くなっています。

DriftはデータベースSQLiteを扱いやすくするためのパッケージです。
データベースは「テーブル」「カラム」「レコード」「フィールド」という4つの要素から構成されいます。
要素の1つに「カラム」があることからもColumnがクラス名で使われていてもおかしくないですね。

Drift以外のデータベース関連のパッケージを使っていても同様なエラーが出るかもしれません。
みなさんの参考になれば幸いです。

「日本株ひとこと投資メモ」をリリースしています

Flutter学習のアウトプットの一環として「日本株ひとこと投資メモ」を公開しました。
簡単に使えるライトな投資メモアプリです。
みなさんの投資ライフに少しでも活用していただきれば幸いです。

🔻🔻🔻iPhone版はこちら🔻🔻🔻
https://apps.apple.com/jp/app/日本株ひとこと投資メモ/id1665808160

🔻🔻🔻Android版はこちら🔻🔻🔻
https://play.google.com/store/apps/details?id=com.arafipro.jpstockminimemo

GitHubで編集を提案

Discussion

ログインするとコメントできます