62
задан 2 July 2019 в 12:54

3 ответа

Не передавайте параметры 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);
  }
}
134
ответ дан 31 October 2019 в 13:39

Другой ответ, основываясь на 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);
  }
}
4
ответ дан 31 October 2019 в 13:39

Для передачи начальных значений (ничего не передавая конструктору)

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);
  }
}
0
ответ дан 31 October 2019 в 13:39

Другие вопросы по тегам:

Похожие вопросы: