🌍

テキストウィジェット使いたいだけなのに、「Prefer const with constant constructors」が出るようになった

2022/04/11に公開

環境

macOS Montrey 12.3
Flutter 2.10.4
dart 2.16.2
Xcode 13.3
VSCode 1.66.0

事象

flutterの初期コードで学習中、buildウィジェット内のText箇所で「Prefer const with constant constructors」の警告が表示されてしまう。

ソースコード

  
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: Center(
        child: ElevatedButton(
          child: Text('次へ'),
          onPressed: (){
            //押した時の処理
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }

原因

いつからかdartの静的解析機能によって、パフォーマンスの都合上、定数であればconstをつけましょうということのようです。

↓以下、公式
https://dart-lang.github.io/linter/lints/prefer_const_constructors.html

解決策

単純にTextの前にconstをつけるだけでOKです。
ただし、複数あって面倒な場合は、analysis_options.yamlファイルを開き、下記のように追記します。

linter:
  rules:
    - prefer_const_constructors

その後、ターミナル上で、下記を実行します。

dart fix --apply

これで、自動で、constをつけてくれます。

対応後、ソースコード

  
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: Center(
        child: ElevatedButton(
          child: const Text('次へ'),
          onPressed: (){
            //押した時の処理
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }

Discussion