使用Getx在Flutter中传递多个数据

27

我想使用 Get 包在一个屏幕上传递多个数据到另一个屏幕。

Get.to(Second(), arguments: ["First data", "Second data"]);
5个回答

35

步骤:1:发送数据

Get.to(Second(), arguments: ["First data", "Second data"]);

步骤:2:从第一个屏幕获取数据

var data = Get.arguments;

我正在传递数据,例如:onPressed: () => Get.to(() => GendersPage(), arguments: {"FOR_SELECTION", true}),但是当我尝试将参数作为映射访问时,会出现错误。 final Map<String, bool>? args = Get.arguments; bool get forSelection => args!["FOR_SELECTION"]!; - Faizan Mubasher
有没有一种方法可以使用 onGenerateRoute 函数,就像文档 https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments 中所示,但是使用 getx? - Antonycx

27

如果您需要在 getx 中传递带有的数据,请尝试以下方法

第一个屏幕

Get.to(() => SecondScreen(), arguments: [
    {"first": 'First data'},
    {"second": 'Second data'}
]);

第二屏幕

class SecondScreenController extends GetxController {
  dynamic argumentData = Get.arguments;

  @override
  void onInit() {
    print(argumentData[0]['first']);
    print(argumentData[1]['second']);
    super.onInit();
  }
}

Get.back()结果

Get.to(() => SecondScreen(), arguments: [
   {"first": 'First data'},
   {"second": 'Second data'}
]).then((result) {
    if (result[0]["backValue"] == "one") {
        print("Result is coming");
    }
});

Get.back(result: [
    {"backValue": "one"}
]);

1
"Get.back();这种情况如何发送数据回去?有什么想法吗?我正在努力解决它。" - carrasc0
@carrasc0 我编辑了回答,请检查。 - Tejas Patel

18

我找到了这个解决方案。

首屏

Get.to(Second(), arguments: ["First data", "Second data"]);

第二屏幕

声明变量(列表)

var one = Get.arguments;

设置数据

Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text("${one[0]}"), // first element set here
          Text("${one[1]}"), // second element set here
        ],
      )

2

您可以传递一个字符串、一个 Map、一个列表,甚至是一个类实例。

Get.toNamed("/example_page", arguments: {'arg1': 'val1', 'arg2': 'val2'};

下一页内容如下:
final args = Get.arguments;
print(args); // output: {arg1:val1, arg2:val2}
            

More detail


0
如果你想在Getx参数中传递任何List/ModelClass的数据,
首先是第一个屏幕。
     List<ModelClassName>modelList = [];

导航
  Get.toNamed(YouRoutes.Name ,
                        arguments:  modelList[index] );

注意 - "index" 在 ListView.builder 下面。
下一个屏幕
ModelClassName data = Get.arguments;


 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接