如何在 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】:

在第一页(假设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 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

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

flutter pushname使用和多参数传递

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

如何使用 onGenerateRoute 在 URL 中显示 Flutter Web 路由名称?

Flutter 中的命名路由如何消除重复?

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