[英]Writing to a Local json file dart flutter
我正在创建一个允许用户保存小数据的应用程序。 我的资产文件夹中有一个 json 文件,我想创建一个可以向其写入更多 json 数据的应用程序。 路径:assets\/vault.json
Vault.json
[
{
"name":"Ash",
"age":"22",
"hobby" : "golf"
},
{
"name":"philip",
"age":"17",
"hobby" : "fishing"
},
{
"name":"charles",
"age":"32",
"hobby" : "drawing"
}
]
您可以将其存储在应用程序的文件系统中,而不是存储在rootBundle
中。 请参考这里
由于您无法在运行时写入资产中的文件,如前所述,请将其存储在本地计算机的其他位置。 下面的代码可以从一个json<\/strong>文件中读取并写入它——
import 'dart:io';
import 'dart:convert';
List<Player> players = [];
void main() async{
print("hello world");
final File file = File('D:/Sadi/../vault.json'); //load the json file
await readPlayerData(file); //read data from json file
Player newPlayer = Player( //add a new item to data list
'Samy Brook',
'31',
'cooking'
);
players.add(newPlayer);
print(players.length);
players //convert list data to json
.map(
(player) => player.toJson(),
)
.toList();
file.writeAsStringSync(json.encode(players)); //write (the whole list) to json file
}
Future<void> readPlayerData (File file) async {
String contents = await file.readAsString();
var jsonResponse = jsonDecode(contents);
for(var p in jsonResponse){
Player player = Player(p['name'],p['age'],p['hobby']);
players.add(player);
}
}
class Player {
late String name;
late String age;
late String hobby;
Player(
this.name,
this.age,
this.hobby,
);
Player.fromJson(Map<String, dynamic> json) {
name = json['name'];
age = json['age'];
hobby = json['hobby'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
data['hobby'] = this.hobby;
return data;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.