diagnostics_no_logic_in_create_state 진단: createState에 로직을 넣지 않을 때
diagnostics_no_logic_in_create_state 진단: createState에 로직을 넣지 않을 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. no_logic_in_create_state는 StatefulWidget의 하위 클래스에 구현한 createState가, 인자 없는 생성자를 호출해 그 결과를 반환하는 것 외에 다른 로직을 포함할 때 분석기가 알려주는 진단이에요. createState는 단순히 상태 객체를 만들어 주는 역할만 맡아야 해요.
본문
설명
분석기는 StatefulWidget의 하위 클래스에 구현된 createState가, 인자 없는 생성자를 호출해 그 결과를 반환하는 것 외에 다른 로직을 포함할 때 이 진단을 만들어요.
예시
아래 코드는 생성자 호출에 인자가 있어서 이 진단을 만들어요. createState가 MyState(0)처럼 인자를 넘기며 상태를 만들고 있죠.
import 'package:flutter/material.dart';
class const MyWidget({super.key}) extends StatefulWidget {
@override
MyState createState() => MyState(0);
}
class MyState extends State {
int x;
MyState(this.x);
@override
Widget build(BuildContext context) => MyWidget();
}
흔한 해결 방법
createState가 로직을 포함하지 않도록 코드를 다시 작성해요.
import 'package:flutter/material.dart';
class const MyWidget({super.key}) extends StatefulWidget {
@override
MyState createState() => MyState();
}
class MyState extends State {
int x = 0;
MyState();
@override
Widget build(BuildContext context) => MyWidget();
}