android - Flutter:popAndPushNamed 参数传递到新页面?
问题描述
我正在写一个关于 Flutter 的应用程序。我需要做 popAndPushNamed 但我还需要将参数传递给我正在推送的页面。我能怎么做?是否有另一种弹出和推送的方法,或者我必须寻找不同的解决方案?这件事让我发疯了。
提前致谢!
解决方案
要将数据发送到小部件,您可以使用它的构造函数
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;
推荐阅读
- c - Obtain a vertex after a transform in OpenGL?
- google-api - 创建活动系列的问题
- django - 如何在 django 中以 pbkdf2_sha256 格式存储用户密码?
- python - 如何从 statsmodels.tsa.api 中提取系数矩阵
- javascript - 如何结合父 SVG、子 SVG、PNG 和工具提示?
- c++ - 当我尝试在 mainwindow.cpp 之外初始化 QSerialPort 时,QT 出错
- python - 在 jupyterlab 笔记本中导入模块
- c++ - 使用 GDAL C++ 读取 NITF 文件
- c++ - 为什么在 While 循环中添加 break 语句时会出现错误?
- c - 有没有其他方法来计算按位逻辑运算?