Скопируйте значение в другой StatefulWidget - PullRequest
0 голосов
/ 02 мая 2020

Я пытался пересобрать код этого видео (https://www.youtube.com/watch?v=d5PpeNb-dOY), что о том, как скопировать значение String в другое StatefulWidget, но теперь я получаю BodyConstructionState(value) красным цветом подчеркнуто и написано " Слишком много позиционных аргументов: 0 ожидалось, но найдено 1. " Value получено из другого виджета. Я не знаю почему, потому что я сделал это так же, как парень на видео. Кто-нибудь может сказать мне, в чем моя ошибка? Заранее спасибо!

class BodyConstruction extends StatefulWidget {

      String value;
      BodyConstruction({Key key, @required this.value}) : super(key : key);


      @override
      _BodyConstructionState createState() => _BodyConstructionState(value);
    }

    class _BodyConstructionState extends State<BodyConstruction> {

      String value;
      _BodyConstructionState({this.value});

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Это будет работать отлично. Проверьте это.

   // declare a body construction object
   BodyConstruction _bodyConstruction;

   // initialise the object declared above
   _bodyConstruction = BodyConstruction(value: 'Your Value');

Примечание. Когда {} используется в теле конструктора или метода, оно обозначает именованный параметр. Обратитесь к официальной документации для более подробного объяснения.

Нажмите здесь, чтобы узнать больше об именованных параметрах в Flutter

0 голосов
/ 02 мая 2020

Когда вы создаете объект BodyContruction, вы должны делать это

BodyConstruction object = new BodyConstruction(value: "Some Value");

, а не

BodyConstruction object = new BodyConstruction("Some Value");

Создание параметра конструктора с помощью {} делает их именованные необязательные параметры.

Примечание: new клавиатура необязательна в Dart.

...