メインコンテンツにスキップ

no_logic_in_create_state

安定版
Flutter

createState には、いかなるロジックも記述しないでください。

詳細

#

createState() にはいかなるロジックも記述しないでください

createState() の実装は、State オブジェクトの新しいインスタンスを返すだけで、それ以上のことは行わないようにしてください。state へのアクセスは widget フィールド経由で行うことが推奨されるため、カスタムコンストラクタパラメータを使用して State オブジェクトにデータを渡すことも避けるべきです。したがって、State コンストラクタは引数なしで呼び出される必要があります。

悪い例

dart
MyState global;

class MyStateful extends StatefulWidget {
  @override
  MyState createState() {
    global = MyState();
    return global;
  }
}
dart
class MyStateful extends StatefulWidget {
  @override
  MyState createState() => MyState()..field = 42;
}
dart
class MyStateful extends StatefulWidget {
  @override
  MyState createState() => MyState(42);
}

良い例

dart
class MyStateful extends StatefulWidget {
  @override
  MyState createState() {
    return MyState();
  }
}

有効にする

#

no_logic_in_create_state ルールを有効にするには、analysis_options.yaml ファイルの linter > rules の下に no_logic_in_create_state を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    - no_logic_in_create_state

代わりに YAML マップ構文を使用して linter ルールを構成している場合は、linter > rules の下に no_logic_in_create_state: true を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    no_logic_in_create_state: true