如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?
Posted
技术标签:
【中文标题】如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?【英文标题】:how to pass data from one screen to another screen with pushNamed in FLutter? 【发布时间】:2021-12-15 00:36:37 【问题描述】:我想使用 pushNamed 将文本框控制器的数据从一个屏幕传递到另一个屏幕,那么我该如何传递数据?
这是导航屏幕的方法。正如第一页中的波纹管。
@override
void validateOtpSuccess()
Navigator.of(context).popAndPushNamed(Constants.ROUTE_CHANGE_PASSWORD);
我想在更改密码屏幕上获取数据,那么我如何访问数据以更改密码屏幕?
【问题讨论】:
参考我的回答here希望对你有帮助。但有一件事我正在使用Navigator.push()
方法
【参考方案1】:
在第一页(假设data
是String
):
final result = await Navigator.pushNamed<String?>(context, '/change_password_page', arguments: data);
在您的onGenerateRoute
方法中:
Route? onGenerateRoute(RouteSettings settings)
...
switch (settings.name)
...
case '/change_password_page':
final data = settings.arguments as String?;
return MaterialPageRoute<String?>(
builder: (context) => ChangePasswordPage(arguments: data!),
);
在您的 ChangePasswordPage
小部件中:
class ChangePasswordPage extends StatefulWidget
final String data;
const ChangePasswordPage(required this.data, Key? key) : super(key: key);
@override
_ChangePasswordPageState createState() => _ChangePasswordPageState();
...
Navigator.pop<String?>(context, _newPassword);
【讨论】:
以上是关于如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:如何将 PageRoute Animation 与 Navigator.of(context).pushNamed 结合起来
为啥 Navigator.pushNamed(context, "route");在我的 flutter-cupertino-app 代码示例中工作?