內容

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