no_logic_in_create_state
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