内容

no_logic_in_create_state

不要在 createState 中放置任何逻辑。

此规则从 Dart 2.8 开始可用。

规则集:flutter

详细信息

#

**不要** 在 createState() 中放置任何逻辑。

createState() 的实现应该返回一个新的 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