🤷

【Flutter】StatefulWidgetにてlinterで「Don't put any logic in createState」

2022/03/16に公開

概要

FlutterでStatefulWidgetのクラスを書いている時、linterで以下のようなワーニングが表示されました。今回は、この原因とどう修正するかを書いてみます。

原因

こちらのstackoverflowの記事にある通り、StatefulWidgetのクラスでは、コンストラクタへパラメータを渡すことは推奨されていないようです。
変数を参照したい場合はno_logic_in_create_stateのドキュメントにある通り、widgetフィールドを通して行うのが適切だそうです。

修正後の実装

linterで該当の箇所を修正したら、以下の通りになります。

import 'package:flutter/material.dart';

class SampleApp extends StatefulWidget {
  final String title;
  const SampleApp({Key? key, required this.title}) : super(key: key);

  
  _SampleApp createState() => _SampleApp();
}

class _SampleApp extends State<SampleApp> {
  
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Column(
          children: const <Widget>[Text("test")],
        ));
  }
}

その他参考

【Flutter】StatefulWidgetの作り方

Discussion