Не передавайте параметры State
использование, это - конструктор. Необходимо только получить доступ к этим использование this.widget.myField
.
Не только редактирование конструктора требует большого физического труда; это ничего не приносит. Нет никакой причины копировать все поля Widget
.
РЕДАКТИРОВАНИЕ:
Вот пример
class MyStateful extends StatefulWidget {
final String foo;
const MyStateful({Key key, this.foo}): super(key: key);
@override
_MyStatefulState createState() => _MyStatefulState();
}
class _MyStatefulState extends State<MyStateful> {
@override
Widget build(BuildContext context) {
return Text(widget.foo);
}
}
Другой ответ, основываясь на anwser @RГ©miRousselet и для вопроса @user6638204, если Вы хотите передать начальные значения и все еще смочь обновить их в состоянии позже:
class MyStateful extends StatefulWidget {
final String foo;
const MyStateful({Key key, this.foo}): super(key: key);
@override
_MyStatefulState createState() => _MyStatefulState(foo: this.foo);
}
class _MyStatefulState extends State<MyStateful> {
String foo;
_MyStatefulState({this.foo});
@override
Widget build(BuildContext context) {
return Text(foo);
}
}
Для передачи начальных значений (ничего не передавая конструктору)
class MyStateful extends StatefulWidget {
final String foo;
const MyStateful({Key key, this.foo}): super(key: key);
@override
_MyStatefulState createState() => _MyStatefulState();
}
class _MyStatefulState extends State<MyStateful> {
@override
void initState(){
super.initState();
// you can use this.widget.foo here
}
@override
Widget build(BuildContext context) {
return Text(foo);
}
}