【问题标题】:how to pass data from one screen to another screen with pushNamed in FLutter?如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?
【发布时间】:2021-12-15 00:36:37
【问题描述】:

我想使用 pushNamed 将文本框控制器的数据从一个屏幕传递到另一个屏幕,那么我该如何传递数据?

这是导航屏幕的方法。正如第一页中的波纹管。

@override
  void validateOtpSuccess() {
    Navigator.of(context).popAndPushNamed(Constants.ROUTE_CHANGE_PASSWORD);
  }

我想在更改密码屏幕上获取数据,那么我如何访问数据以更改密码屏幕?

【问题讨论】:

  • 参考我的回答here希望对你有帮助。但有一件事我正在使用Navigator.push() 方法

标签: flutter


【解决方案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);

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 2021-01-06
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多