跳至主要內容

no_logic_in_create_state

穩定
Flutter

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

詳細資訊

#

**請勿** 在 createState() 中放入任何邏輯。

createState() 的實作應回傳 State 物件的新實例,且不應執行其他操作。由於偏好透過 widget 欄位存取 state,因此也應避免使用自訂建構子參數將資料傳遞至 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