Передача начального параметра из внешнего в Statefulwidget

#flutter

#flutter

Вопрос:

Я хочу сделать Page Widget со строкой «mytitle»,»Anime»

Возможно, это слишком простой вопрос, но меня очень смущает взаимосвязь StatefulWidget и State

 return Navigator.pushReplacement(context,
     NoAnimationMaterialPageRoute(
      builder: (context,"mytitle","Anime") => AnimePage()));

class AnimePage extends StatefulWidget {
  AnimePage({Key key, this.title, this.video}) : super(key: key);
  final String title;
  final String video;

  @override
  _AnimePageState createState() => _AnimePageState();
}

class _AnimePageState extends State<AnimePage> {
  @override
  void initState() {
    super.initState();
    print(widget.video) //want to show `Anime` here
    };
  

Ответ №1:

Это работает:

    return Navigator.pushReplacement(
      context,
      NoAnimationMaterialPageRoute(
        builder: (context) => AnimePage(
          // pass your parameter values
          title: 'My Anime',
          video: YOUR_VIDEO_PARAM,
        ),
      ),
    );

  

Комментарии:

1. Спасибо, это работает. и просто понять. Спасибо.

Ответ №2:

Вы также должны добавить конструктор для состояния, вот так…

 class AnimePage extends StatefulWidget {
  AnimePage({Key key, this.title, this.video}) : super(key: key);
  final String title;
  final String video;

  @override
  _AnimePageState createState() => _AnimePageState(title,video);
}

class _AnimePageState extends State<AnimePage> {
  final String title;
  final String video;

  _AnimePageState(this.title,this.video);

  @override
  void initState() {
    super.initState();
    print(widget.video) //want to show `Anime` here
    };
  

Я надеюсь, что это было то, что вы искали

Комментарии:

1. Большое вам спасибо, но в моем случае я не использую constructor в _AnimePageState , но это работает.