Flutter: switch文で「The switch case expression type 'double' can't override the '==' operator.」のエラー

結論:switch文の値にはdouble型ではなくint型(整数)を使う

2022/12/6 Flutter エラー・バグ日記

 

常識だったのかもしれないが、全然知らずに詰まった。

 

スライダー(Slider)を使う際に、「switch」文を使っていたら、赤い波線が表示され、以下の文法エラーが出ていた。

 

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

Documentationの意味がわからず。。

doubleが「==」をオーバーライドできないとのこと。よく分からないので、リンク先の「Documentation」を読んでみるが、

 

次のコードでは、キーワード case (C(0)) に続く式の型が C であり、クラス C が == 演算子をオーバーライドするため、この診断が生成されます。(Google翻訳)

 

とのことで、何のことだか理解が追いつかず。。

 

(出典) https://dart.dev/tools/diagnostic-messages?utm_source=dartdev&utm_medium=redir&utm_id=diagcode&utm_content=case_expression_type_implements_equals#case_expression_type_implements_equals

 

if文に変更せよ

リンク先の「Common fixes」のところを見ると、

 

強い理由がない場合は、if-else を使用するようにコードを書き直してください。(Google翻訳)

 

とのこと。

 

if elseでも書けなくはないが、できればswitch文を使いたい。

 

この時点でも、なぜエラーになるのか理解できず。。

 

実はdoubleとboolは使えなかった。。

ググってみると、こちらに大変わかりやすい解説があった(ありがとうございます!)。

 

 

なんと、、、switch文では、double型とbool型を使用できないとのこと。

 

恥ずかしながら、全然知らなかった。。。

 

調べてみると、JavaやCでも同様にdoubleが使えないらしく、switch文の常識だった模様。

 

Sliderと組み合わせるため、toInt()で整数化する

「Slider」の「value」プロパティには、double型しか設定できないため、スライダーと組み合わせてswitch文を使いたい場合に困る。。

 

そこで、単純ではあるが、「toInt()」メソッドで「Slider」の「value」プロパティの値を整数化した上で、switch文に用いることにした。

 

「value」プロパティに、小数点以下の端数がある場合は、10倍するなどして、整数化した上で、「toInt()」すれば対処できそう。

 

やや面倒だが、switch文の一般的な制約らしいので、仕方がない。勉強になった。

 

\一般的なエラー対処法をまとめた記事はこちら/

 

リリースしたアプリ(全てFlutterで開発)

暗記用マーカー - シンプル穴埋め問題作成

Google Play で手に入れよう
Download on the App Store

 

超即ToDo –最短2タップで通知登録できるタスク管理アプリ

Google Play で手に入れよう
Download on the App Store

 

かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載

Google Play で手に入れよう
Download on the App Store

 

シンプルメモ帳「BasicMemo」 - 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載

Macのデスクトップ版もリリースしました。

Google Play で手に入れよう
Download on the App Store

 

個人アプリ開発で役立ったもの

おすすめの学習教材

 \キャンペーン時を狙えば安価で本場の内容が学べる/

 

超初心者向けでオススメな元Udemyの講座/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 - Dartの要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存...何でもできて超必須

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

タイトルとURLをコピーしました