我正在做一個有網站的專案,我正在為它開發一個電話應用程式。在網站上,用戶可以創建自己的表單,并將此表單作為 json 保存到資料庫,然后將此 json 檔案轉換為反應組件并顯示在頁面中我想將此 json 檔案轉換為 Flutter 小部件并在我的應用程式中顯示,我該怎么做?
有一些顫振包,但不適用于我的 json
uj5u.com熱心網友回復:
我認為您的 json 模型與您要使用的包太不同了。我了解您無法更改它,因為它可以在您的其他網站上運行。因此,您需要從頭開始重新創建構建器。
我認為您可以創建一個采用 json 的類并使用 getter 創建表單,以使您的所有控制器都提交表單值。
這是我的例子:
class _FormCreatorState extends State<FormCreator> {
late Widget formWidget;
final Map<String, dynamic> _formController = {};
@override
void initState() {
Map<String, dynamic> form = jsonDecode(widget.jsonForm);
for (var field in form["form"]["fields"]) {
_formController.addAll({
field["name"]: field["value"] == "text"
? TextEditingController()
: null // you can add else if (..) to handle more controller
});
}
formWidget = Column(
children: [
for (var field in form["form"]["fields"])
if (field["type"] == "text")
TextFormField(
keyboardType: TextInputType.text,
decoration: InputDecoration(
labelText: field["label"],
),
initialValue: field["value"],
controller: _formController[field["name"]],
)
//you can add else if (..) to handle more field
else
Container()
],
);
super.initState();
}
@override
Widget build(BuildContext context) {
return (Column(
children: [
formWidget,
Center(
child: TextButton(onPressed: () {
//do something to get value of your controller with the _formController variable
}, child: const Text("Submit"))),
],
));
}
}
"form": {
"fields": [
{
"type": "text",
"name": "name",
"label": "Name",
"value": "John Doe",
},
{
"type": "text",
"name": "email",
"label": "Email",
"value": ""
}
]
}
如果有很多問題,請嘗試給我們一個您的 json 示例!
uj5u.com熱心網友回復:
這個概念主要用于從后端渲染 App UI。因此它被稱為Server Driven UI。在這種情況下,我們決議來自服務器的 json 資料并將其映射到小部件。簡單的例子在這里backend-to-ui-parser
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/530402.html
標籤:安卓反应json扑镖
下一篇:如何解決此回應型別“({boolgrowable})=>List<DropdownMenuItem<dynamic>>”不是“List<DropdownMenuIt
