Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
写入本地json文件dart FLATTER_Json_Dart_Flutter - Fatal编程技术网

写入本地json文件dart FLATTER

写入本地json文件dart FLATTER,json,dart,flutter,Json,Dart,Flutter,我正在创建一个允许用户保存小数据的应用程序。我的资产文件夹中有一个json文件,我想创建一个可以向其中写入更多json数据的应用程序。路径:assets/vault.json [ { "name":"Ash", "age":"22", "hobby" : "golf" }, { "name":"philip", "age":"17", "hobby" : "fishing" }, { "name":"charles",

我正在创建一个允许用户保存小数据的应用程序。我的资产文件夹中有一个json文件,我想创建一个可以向其中写入更多json数据的应用程序。路径:assets/vault.json

[
  {
    "name":"Ash",
    "age":"22",
    "hobby" : "golf"
  },
  {
    "name":"philip",
    "age":"17",
    "hobby" : "fishing"
  },
  {
    "name":"charles",
    "age":"32",
    "hobby" : "drawing"
  }

]
vault.json

[
  {
    "name":"Ash",
    "age":"22",
    "hobby" : "golf"
  },
  {
    "name":"philip",
    "age":"17",
    "hobby" : "fishing"
  },
  {
    "name":"charles",
    "age":"32",
    "hobby" : "drawing"
  }

]
但是,我一直在向json文件添加更多列表

在main.dart中,我为输入创建了3个文本字段,并在按下按钮时触发WriteFile(arg1、arg2、arg3)

以下是我尝试过的:

void writeToFile(String hobbyy, String agee, String namee) {
  print("Writing to file!");

  Map<String, dynamic> content = new Map();
  content1 = {name: namee};
  content2 = {age: agee};
  content3 = {hobby: hobbyy};

  content.addAll(content1);
  content.addAll(content2);
  content.addAll(content3);


  print(content);  //working fine
}

Future<String> _loadAVaultAsset() async {
  return await rootBundle.loadString('assets/vault.json');
}

Future loadVault() async {
  String jsonString = await _loadAVaultAsset();
  final jsonResponse = json.decode(jsonString);
  var add = jsonResponse.toString();


  add = add.replaceFirst(new RegExp(r'}]'), "},"+content.toString()+"]");

  print(add); //shows the full json string that I want. 

//How to add/replace (add) into the json file?
}
void writeToFile(字符串hobbyy、字符串agee、字符串namee){
打印(“写入文件!”);
地图内容=新地图();
content1={name:namee};
content2={age:agee};
content3={hobby:hobbyy};
content.addAll(content1);
content.addAll(content2);
content.addAll(content3);
打印(内容);//工作正常
}
Future\u loadAVaultAsset()异步{
return wait-rootBundle.loadString('assets/vault.json');
}
Future loadVault()异步{
字符串jsonString=await_loadAVaultAsset();
最终jsonResponse=json.decode(jsonString);
var add=jsonResponse.toString();
add=add.replaceFirst(newregexp(r'}]'),“},”+content.toString()+“]”;
打印(添加)//显示我想要的完整json字符串。
//如何在json文件中添加/替换(add)?
}
虽然我得到了我想要的json字符串,但我无法在json文件中反映它

这是我的vault_model.dart(如果有任何用途):

class用户列表{
最终用户名单;
用户列表({
这个用户,
});
factory UsersList.fromJson(列表parsedJson){
List entireList=新列表();
entireList=parsedJson.map((i)=>Users.fromJson(i)).toList();
返回用户列表(
用户:entireList,
);
}
}
类用户{
最后的字符串名;
最终管柱年龄;
最终爱好弦乐;
使用者({
这个名字,
这个年龄,
这是我的爱好
});
factory Users.fromJson(映射json){
返回新用户(
名称:json['name'],
年龄:json['age'],
hobby:json['hobby'],
);
}
}

请教我如何在assets/vault.json路径中将旧json字符串替换为新字符串(add)。

您可以将其存储在应用程序的文件系统中,而不是存储在
根束中。请参阅

在运行时,您似乎无法写入资产中的文件(请参阅此以获取参考)。这描述了如何使用path_provider查找本地路径和读/写本地文件