我有 json 檔案,其中包含以下資料:
{
"item1": "value1",
"item2": "value2",
"item3": "value3"
}
我還有一個Items()類,它具有getItems()加載 json 檔案的方法方法:
class Items {
Future<Map<String, dynamic>> getItems() async {
String jsonData =
await rootBundle.loadString('assets/items.json');
Map<String, dynamic> data = jsonDecode(jsonData);
return data;
}
}
我也有這個有狀態的小部件,我想用它來顯示專案串列
class ItemsView extends StatefulWidget {
const ItemsView({Key? key}) : super(key: key);
@override
_ItemsViewState createState() => _ItemsViewState();
}
class _ItemsViewState extends State<ItemsView> {
late String items = "";
setItems() async {
final itemsList = Items().getItems().toString();
setState(() {
items = itemsList;
});
}
@override
initState() {
setItems();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: ListView.builder(itemBuilder: itemBuilder),
),
);
}
}
我想用 .json 顯示來自 json 的專案串列ListView.builder。我還想"item4"在 json 檔案中添加另一個專案,例如帶有鍵值的專案,并且ListView.builder應該自動添加新專案。我想知道我怎么能做到這一點?
編輯
如果我想添加另一個專案,我也想只更新 json 檔案,所以我避免使用模型,因為如果我想添加另一個專案,你還必須更新模型。
uj5u.com熱心網友回復:
你可以試試這個
class Items {
Map<String, dynamic> getItems() {
String jsonData = '{ "item1": "value1","item2": "value2","item3": "value3"}';
Map<String, dynamic> data = jsonDecode(jsonData);
return data;
}
}
class App extends StatefulWidget {
const Deneme({ Key key }) : super(key: key);
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
@override
Widget build(BuildContext context) {
Map<String, dynamic> data =Items().getItems();
return Scaffold(
body: ListView.builder(
itemCount: data.keys.length,
itemBuilder: (c,index){
return ListTile(
title: Text("Value " data.values.toList()[index]),
subtitle: Text("Key " data.keys.toList()[index]),
);
},
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439865.html
