首页 > 解决方案 > Flutter:popAndPushNamed 参数传递到新页面?

问题描述

我正在写一个关于 Flutter 的应用程序。我需要做 popAndPushNamed 但我还需要将参数传递给我正在推送的页面。我能怎么做?是否有另一种弹出和推送的方法,或者我必须寻找不同的解决方案?这件事让我发疯了。

提前致谢!

标签: androiddartflutter

解决方案


要将数据发送到小部件,您可以使用它的构造函数

String result = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => SecondWidget("String")));

在这种情况下result是新字符串,它将从SecondWidget

class SecondWidget extends StatefulWidget {
  SecondWidget(this.text);
  final String text;

在某处SecondWidgetState

Navigator.pop(context, "New string");

这将关闭SecondWidget并返回值,因为result 我认为这很清楚并且会有所帮助

UPD 在您的情况下如何做(类似这样)

Profile profile = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => LoginWidget()));
if (profile != null) Navigator.of(context).push(MaterialPageRoute(builder: (context) => MainWidget(profile)));

LoginWidget

void _afterLogIn() {
  // do something
  Navigator.pop(context, this.receivedProfile);
}

MainWidget

class MainWidget extends StatefulWidget {
  MainWidget(this.profile);
  Profile profile;

推荐阅读