I'm the junior flutter developer, and I would like to seek your support. Currently, I would need to update data in a local JSON file in Flutter as below.
{"title":"ករណី ពិនិត្យផ្ទៃពោះ",
"lists":[
{
"id":"127",
"faci_code":"20018",
"y_txt":"2022",
"m_txt":"1",
"ind_id":"1",
"qty":"100",
"rec_by":"od123456",
"rec_date":"2022-06-27 13:50:31",
"lock_txt":"0",
"sec_id":"1",
"ind_num":"1",
"ind_eng":"# of ANC 1",
"ind_kh":"ចំនួនស្រ្ដីបានពិនិត្យផ្ទៃពោះលើកទី១ទាំងអស់",
"HFAC_NAME":"Boeng Pram",
"HFAC_NAMEKh":"បឺងប្រាំ",
"OD_CODE":"201",
"OD_NAME":"Thma Koul",
"OD_NAME_KH":"ថ្មគោល",
"PRO_CODE":"2",
"PROVINCE":"Battambang",
"PROVINCE_KH":"បាត់ដំបង"
}]}
I have searched and tried multiple solutions, but I couldn't resolve this issue yet. I hope someone can provide a solution in advance.
Regard, thanks.
You can't right files in project folders.
Try local storage.
I used path_provider package in this example for get application directory path to write json file on local storage.
class DataClass {
String name;
int age;
DataClass(this.name, this.age);
factory DataClass.fromJson(Map<String, dynamic> json) {
return DataClass(json['name'], json['age']);
}
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
}
DataClass? updateJson;
void createJson() async {
String data = await rootBundle.loadString('assets/data.json');
Directory appDocDir = await getApplicationDocumentsDirectory();
File jsonFile = File("${appDocDir.path}/data.json");
jsonFile.writeAsStringSync(data);
updateJson = DataClass.fromJson(jsonDecode(data));
setState(() {});
}
void updateJsonFile() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
File jsonFile = File("${appDocDir.path}/data.json");
//update
final jsonAsString = jsonFile.readAsStringSync();
updateJson = DataClass.fromJson(jsonDecode(jsonAsString));
updateJson?.name = "updated name";
updateJson?.age = _counter;
jsonFile.writeAsStringSync(jsonEncode(updateJson?.toJson()));
setState(() {});
}