[英]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.