diagnostics_no_logic_in_create_state 진단: createState에 로직을 넣지 않을 때

diagnostics_no_logic_in_create_state 진단: createState에 로직을 넣지 않을 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. no_logic_in_create_stateStatefulWidget의 하위 클래스에 구현한 createState가, 인자 없는 생성자를 호출해 그 결과를 반환하는 것 외에 다른 로직을 포함할 때 분석기가 알려주는 진단이에요. createState는 단순히 상태 객체를 만들어 주는 역할만 맡아야 해요.

출처: no_logic_in_create_state

본문

설명

분석기는 StatefulWidget의 하위 클래스에 구현된 createState가, 인자 없는 생성자를 호출해 그 결과를 반환하는 것 외에 다른 로직을 포함할 때 이 진단을 만들어요.

예시

아래 코드는 생성자 호출에 인자가 있어서 이 진단을 만들어요. createStateMyState(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();
}

더 알아보기