You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用GetX实现路由返回携带参数及上一页接收选中联系人结果

GetX路由返回传参及接收实现步骤

你当前ContactsList组件里写的Get.back(result:xxx)回传参数的逻辑是正确的,只需要补充上一页跳转时的结果接收逻辑即可,完整实现流程如下:

1. 上一页添加跳转&结果接收逻辑

Get.to()/Get.toNamed()默认返回Future对象,可以直接用await接收下一页调用Get.back()时携带的result参数:

// 上一页的跳转触发方法,比如点击「选择联系人」按钮时调用
void selectContact() async {
  // 等待联系人选择页返回结果,替换成你实际的联系人页路由写法即可
  final String? selectedPhone = await Get.to(() => ContactsListPage()); 
  // 非空判断,处理用户主动返回未选联系人的场景
  if (selectedPhone != null) {
    // 拿到结果后处理你的业务逻辑,比如展示到输入框、赋值给状态变量
    debugPrint("选中的联系人手机号:$selectedPhone");
  }
}

如果用命名路由,写法如下:

final String? selectedPhone = await Get.toNamed('/contacts/list');

2. 扩展回传参数(可选)

如果你需要回传完整联系人信息而非仅手机号,可以直接修改Get.back的result参数:

// ContactsList的onTap逻辑修改,回传整个contact对象
onTap: () {
  Get.back(result: contact);
},

上页对应修改接收类型即可:

final AppContact? selectedContact = await Get.to(() => ContactsListPage());
if (selectedContact != null) {
  print(selectedContact.info.displayName);
  print(selectedContact.info.phones?.first.value);
}

需要回传多个自定义字段也可以用Map封装:

Get.back(result: {
  "name": contact.info.displayName ?? "",
  "phone": contact.info.phones?.elementAt(0).value ?? "",
  "avatar": contact.avatarUrl
});

注意事项

  • 用户点击系统返回键、AppBar默认返回按钮时不会携带result,返回值默认为null,必须做非空判断避免空异常
  • 回传的参数类型没有限制,支持所有Dart可序列化类型

内容的提问来源于stack exchange,提问作者Nashon Kimutai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:27:06