簡體   English   中英

Flutter(dart) 錯誤:無法將參數類型分配給參數類型 'dynamic Function(List<student> ?)'</student>

[英]Flutter(dart) error: The argument type can't be assigned to the parameter type 'dynamic Function(List<Student>?)'

在Flutter的新版本中遇到錯誤如下。

錯誤:參數類型“列表?” 無法分配給參數類型“動態函數(列表?)”。 (argument_type_not_assignable 在 [temel_widget] lib\screens\student_add.dart:14)

class StudentAdd extends StatefulWidget {
    //Student addStudent = Student.withId(0, "", "", 0);
    List<Student>? students;
    StudentAdd(List<Student>? students) {
    this.students = students;
  }
  @override
  State<StatefulWidget> createState() {
    return _StudentAddState(students);  **This here error message**
  }
}
class _StudentAddState extends State with StudentValidationMixin {
  //Student addStudent = Student.withId(0, "", "", 0);

  List<Student>? students=[];
  var student = Student.withoutInfo();
  var formKey = GlobalKey<FormState>();

  _StudentAddState(StudentAdd(List<Student>? students)) {
    this.students = students;
  }

如果你檢查這個tudentAdd(List<Student>? students)你正在調用_StudentAddState中的StudentAdd構造函數。

_StudentAddState(StudentAdd(List<Student>? students)) {
    this.students = students;
  }

你需要像

_StudentAddState(List<Student>? students) {
    this.students = students;
  }

您也可以避免傳遞參數,而我們可以使用widget.varableName訪問 class 級變量。 並啟動項目我們在initState中有 initState

class StudentAdd extends StatefulWidget {
  StudentAdd({
    Key? key,
    required this.students,
  }) : super(key: key);

  List<Student>? students;
  @override
  State<StudentAdd> createState() => _StudentAddState();
}

class _StudentAddState extends State<StudentAdd> {
  @override
  void initState() {
    super.initState();

    ///getting students also, this can be done anyplace on state class
    print(widget.students?.length);
  }
 //....
}

檢查 state 構造函數中的參數應該是

_StudentAddState(List<Student>? students)

而且您不需要將數據從 Widget 傳遞到其 state,您可以使用widegt.data從 State class 訪問 widget 數據

class _StudentAddState extends State<StudentAdd> with StudentValidationMixin {

  List<Student>? get students = widget.students;
  var student = Student.withoutInfo();
  var formKey = GlobalKey<FormState>();

  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM