繁体   English   中英

如何动态寻址 flutter 中的小部件?

[英]How to dynamically address widgets in flutter?

我目前正在开发一个动态构建布局的项目。 布局在 JSON 文件中定义。 我现在已经设法动态地构建布局。

但现在我面临如何动态处理这些小部件的问题。 相关数据在第二个 JSON 文件中发送。

布局的 JSON 如下所示:

"page": {
      "pagename": "maingetdatapage",
      "actionputbarcode": "OrderId=233:StaffId=32",
      "row": [
        {
          "name": "line1",
          "edgefloat": "top",
          "column": [
            {
              "name": "maintopleft",
              "widget": "orderinfo",
              "edgefloat": "all",
            },
            {
              "name": "maintopright",
              "widget": "staffwithPicture",
              "edgefloat": "right"
            }
          ]
        },
        {
          "name": "line2",
          "edgefloat": "all",
          "column": [
            {
              "name": "mainleft",
              "widget": "orderhistory",
              "edgefloat": "left",
            },
            {
              "name": "maindata",
              "widget": "MainDataList",
              "edgefloat": "all",
            },
            {
              "name": "mainright",
              "widget": "MainOccupation",
              "edgefloat": "right"
            }
          ]
        },
        {
          "name": "line3",
          "edgefloat": "botton",
          "column": [
            {"name": "bottominfo", "widget": "BottomInfo", "edgefloat": "all"}
          ]
        }
      ]
    }

每个元素都有一个名称和一个小部件属性。

该名称应该用于寻址小部件,以便可以在以后的时间点插入数据。

第二步发送的数据如下所示:

 "datas": {
    "field": [
      {
        "area": "maintop",
        "name": "maintop",
        "text": "52236"
      },
      {
        "area": "maintop",
        "name": "maintopright",
        "text": "Meier Anlagenbau"
      },
      {
        "area": "maintop",
        "name": "ordersubject",
        "text": "Kühlzelle sun"
      },
      {
        "area": "maindata",
        "name": "workstepbuttonlist",
        "record": [
          {
            "object": "workstepbutton",
            "layoutversion": "inactive",
            "workstepname": "Maschine rüsten",
            "description": "Laserschnitt"
          },
          {
            "workstepname": "schneiden",
            "description": "Laserschnitt",
            "putcommand": "SetWorkStep:OrderId=566:WorkStepId=44:StaffId=16"
          },
          {
            "object": "workstepbutton",
            "layoutversion": "orderclose",
            "workstepname": "Auftrag beenden",
            "putcommand": "OrderFinish:OrderId=566:StaffId=16"
          },
          {
            "object": "workstepbutton",
            "layoutversion": "workfinish",
            "workstepname": "Geht",
            "putcommand": "BookingFinish:OrderId=566:StaffId=16"
          }
        ]
      }

有谁知道如何动态寻址小部件,以便您可以在第二步中插入小部件的数据?

我很感激任何帮助。

您可以使用Provider架构(请参阅此处了解介绍)将数据保存在一个中心位置,然后每个小部件都可以从那里查找它?

让我举一个非常简短的例子:

当第一个 JSON 进入时,使用标识符MyWidget(String widgetID)构建一个小部件。

小部件可以从您的 Provider 读取: String textToDisplay = context.watch<MyDataProvider>().getContentByID(widgetID) 请注意,此查询的结果最初可能为空,或者是占位符字符串或其他内容。 在第二个 JSON 加载并正确保存到MyDataProvider后,小部件将显示正确的内容。

那有意义吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM