【问题标题】:send data through arguments with GetX使用 GetX 通过参数发送数据
【发布时间】:2021-09-15 05:35:32
【问题描述】:

使用 GetX(或任何其他方式)在颤振中发送带有参数的数据是一种好习惯吗?我的意思是它对性能和内存容量有好处吗? ...像这个例子:

Get.toNamed(AppPages.servicesDetails, arguments: [service]);

当(服务)包含仅来自 API 的一种产品的数据时:例如 (id, name, info, image ...等)。

在 servicesDetails 页面中:

 final s = Get.arguments[0];
  @override
  Widget build(BuildContext context) {
    return  Scaffold(
      body:  Center(child: Text(s.name),),

【问题讨论】:

    标签: flutter performance arguments flutter-getx


    【解决方案1】:

    你也可以使用参数。

     var  data = {
          "email" : "test@gmail.com",
          "message" : "hi!"
       };
      Get.toNamed(YourRouteName.name, parameters: data);
    

    从其他页面获取也是这样。

      print(Get.parameters['email']);
    

    在 Getx 上,您也可以将其作为写入文档的数据的 url 链接传递。

    https://github.com/jonataslaw/getx/blob/master/documentation/en_US/route_management.md

    【讨论】:

    • 谢谢,但我的问题是这是最好的方法吗?或者也许通过构造函数发送它?还是其他方式?
    • 传递数组是肯定的,但是如果你传递你的项目或数据的方式更复杂,比如 json,你可能会丢失它传递的数据,所以有时使用 Get.arguments[0] 可能很难确定传递了哪些数据,因此基本上参数是一个不错的选择,因为您将通过 Get.parameters['email'] 调用它,这样您就可以知道您传递和使用了哪些数据。虽然如果您使用构造函数将数据传递到另一个页面也很好,但如果您传递的数据是一个接一个的 ex。姓名、地址等信息很长,所以会很长。
    【解决方案2】:

    你可以简单地使用参数

    Get.toNamed(
          '/my-route',
          arguments: "Hello",
        );
    

    在第二个屏幕上,你可以做

    final title = Get.arguments as String;
    
    

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 2020-09-29
      • 2021-10-17
      • 1970-01-01
      • 2019-05-20
      • 2012-07-04
      • 1970-01-01
      • 2013-06-21
      • 2018-11-24
      相关资源
      最近更新 更多