跳到主要內容

no_logic_in_create_state

穩定版
Flutter

不要在 createState 中放置任何邏輯。

詳細資訊

#

不要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

如果改用 YAML map 語法配置 linter 規則,請在 linter > rules 下新增 no_logic_in_create_state: true

analysis_options.yaml
yaml
linter:
  rules:
    no_logic_in_create_state: true