質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

8584閲覧

Dartでconstを使うと "prefer const with constant constructors"とエラーがでます

wordpress_sos

総合スコア20

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2021/05/26 08:57

題名の通りなのですが、最新のFlutter、main.dartで、

maindart

1void main() async { 2 WidgetsFlutterBinding.ensureInitialized(); 3 await Firebase.initializeApp(); 4 runApp(const MyApp()); 5} 6 7class MyApp extends StatelessWidget { 8 const MyApp({Key? key}) : super(key: key); 9 10 @override 11 Widget build(BuildContext context) { 12 return MaterialApp( 13 title: 'Flutter', 14 debugShowCheckedModeBanner: false, 15 theme: ThemeData( 16 primarySwatch: Colors.blue, 17 scaffoldBackgroundColor: Colors.grey[50], 18 appBarTheme: AppBarTheme( 19 brightness: Brightness.light, 20 color: Colors.white, 21 iconTheme: const IconThemeData(color: Colors.black), 22 textTheme: const TextTheme( 23 headline6: TextStyle( 24 color: Colors.black, 25 fontSize: 20.0, 26 fontWeight: FontWeight.bold, 27 ), 28 ), 29 ), 30 visualDensity: VisualDensity.adaptivePlatformDensity, 31 ), 32 onGenerateInitialRoutes: , 33 initialRoute: , 34 ); 35 } 36}

上記のコードを下記のように変えるとエラーがなくなるのですが、(AppBarThemeの前にconstを入れて、iconThemeとtextThemeからconstを削除したら)、初心者なもので、上記のコードと下記のコードの違いってなんなんでしょうか?どうして上記はだめで下記がダメなのかわかりません。詳しいかた教えてください

appBarTheme: const AppBarTheme( brightness: Brightness.light, color: Colors.white, iconTheme: IconThemeData(color: Colors.black), textTheme: TextTheme( headline6: TextStyle( color: Colors.black, fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ),

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これはDartの静的解析による指摘です(エラーというよりはヒントに近いです)

prefer_const_constructorsルールは、引数が定数のみだったら、クラス生成に const を付けた方がパフォーマンスがいいことを教えてくれるものです。

Flutterは、状態が変わった場合に、何度もビルドされますが、定数のみで構成されるWidgetは、状態に依存せず同じなので、毎回ビルドしなくていいように const を付けてます。

パフォーマンスの違いなので、ルールを無視して、実行しても動作は同じです(ただし、内部的には必要のないビルドが動くので若干パフォーマンスが悪いです...この程度だと目で見て遅いと感じることはないですが、それが多くなると劣化するので、ルールにしたがってconstをつけるのがいいと思います)

投稿2021/05/27 03:47

編集2021/05/27 03:59
popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wordpress_sos

2021/05/27 03:59

そういうことだったんですね。とてもわかりやすく解説していただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問