flutter pushname使用和多参数传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter pushname使用和多参数传递相关的知识,希望对你有一定的参考价值。

参考技术A 配置routes参数

main函数:

使用

单参数

多参数

参考了: Flutter命名路由及传参的深度实践与解读 ;

如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?

【中文标题】如何在 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】:

在第一页(假设dataString):

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 pushname使用和多参数传递的主要内容,如果未能解决你的问题,请参考以下文章

Flutter页面导航

在 Flutter 中使用 pushNamed 导航后如何使 OverlayEntry 消失

Flutter:如何将 PageRoute Animation 与 Navigator.of(context).pushNamed 结合起来

为啥 Navigator.pushNamed(context, "route");在我的 flutter-cupertino-app 代码示例中工作?

使用 Navigator.pushNamed 导航时如何发送参数

Java函数的传参机制