🕹️

【Flutter】ElevatedButtonでcolorを使った時No named parameterと怒られた時の対処法

2022/09/20に公開

はじめに

Flutter初心者なので、あたたかい目で見てください。
普段はプログラミングの勉強をしたり、エラーやバグ、解説記事を投稿しています。

ブログ

https://www.chickensblog.com/

おすすめ

https://zenn.dev/teba_eleven/articles/aedc265d30e751
記事の閲覧、いいね、コメントしてくださるととても嬉しいです👍

筆者の環境

ハードウェア

  • PC:M1MacbookAir
  • OS:Monterey
  • RAM:8GB

Flutterのバージョン等

[✓] Flutter (Channel stable, 3.3.2, on macOS 12.6 21G115 darwin-arm, locale
    ja-JP)
[✓] Xcode - develop for iOS and macOS (Xcode 14.0)

症状

エラーの出るプログラム
child: ElevatedButton(
	//色を青にしたいのに、エラーが出てしまう
	color: Colors.blue,
	onPressed: (){},
	~~省略~~
エラー
lib/main.dart:100:17: Error: No named parameter with the name 'color'.
                color: Colors.blue,
                ^^^^^
../../development/flutter/packages/flutter/lib/src/material/elevated_button.dart:65:9: Context: Found this candidate, but the arguments don't match.
  const ElevatedButton({
        ^^^^^^^^^^^^^^

結論

styleFromを使う
child: ElevatedButton(
	style: ElevatedButton.styleFrom(
                  backgroundColor: Colors.orange,
        ),
	onPressed: (){},
	~~省略~~

または、

MaterialStatePropertyを使う
child: ElevatedButton(
	style: ButtonStyle(
	  backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),
	),
	onPressed: (){},
	~~省略~~

個人的にはstyleFromを使う方がコードがすっきりしている&わかりやすくシンプルなので好きです。

まとめ

  • 基本的にはbackgroundColorを使う
  • primaryは非推奨に

参考にしていたサイトの通りにやってもエラーが出たので焦りましたが、多分バージョンが
Flutterを触り始めて少しなのでまだ完全に理解できていないですが、すこしでも参考になれば幸いです。

関連記事

https://zenn.dev/teba_eleven/articles/c0649d0195ba74
https://www.chickensblog.com/scratch-electron-app/
https://www.chickensblog.com/progate/

参考

https://techracho.bpsinc.jp/wingdoor/2021_04_01/106337
https://minpro.net/primary-and-onprimary-attributes-of-elevatedbutton-stylefrom-are-now-deprecated

Discussion