#flutter #dictionary #dart #statefulwidget #dynamic-mapping
Вопрос:
late File jsonFile;
late Directory dir;
String fileName = "myJSONfile.json";
bool fileExists = false;
Map fileContent = <String, String>{};
//late Map<String, String> fileContent;
//late Map<String, String> fileContent = {};
//var fileContent = <String, String>{};
@override
void initState() {
super.initState();
getApplicationDocumentsDirectory().then((Directory directory) {
dir = directory;
jsonFile = new File(dir.path "/" fileName);
fileExists = jsonFile.existsSync();
if (fileExists)
this.setState(
() => fileContent = json.decode(jsonFile.readAsStringSync()));
});
}
void createFile(Map<String, String> content, Directory dir, String fileName) {
print("Creating file!");
File file = new File(dir.path "/" fileName);
file.createSync();
fileExists = true;
file.writeAsStringSync(json.encode(content));
}
void writeFile(String key, String value) {
print("Writing to file!");
Map<String, String> content = {key: value};
if (fileExists) {
print("File exists");
Map<String, String> jsonFIleContent =
json.decode(jsonFile.readAsStringSync());
jsonFIleContent.addAll(content);
jsonFile.writeAsStringSync(json.encode(jsonFIleContent));
} else {
print("FIle does not exists!");
createFile(content, dir, fileName);
}
this.setState(() => fileContent = json.decode(jsonFile.readAsStringSync()));
}
Эй, я новичок в flutter, и я пытаюсь сохранить данные с помощью файла JSON и прочитать его снова, но это не работает
Это ошибка: (flutter I/flutter ( 4140): тип «_InternalLinkedHashMap<Строка, динамическая>» не является подтипом типа » Карта<Строка, динамическая><Строка, строка>»)
Я искал в Интернете, но не нашел никакого ответа, может кто-нибудь сказать, что это за ошибка и как я могу ее решить?
Комментарии:
1. попробуйте объявить
Map fileContent = <String, String>{};
вот такMap fileContent = <String, dynamic>{};
2. да, это работает, спасибо! но почему я должен говорить об этом динамично?
3. это тип карты, которую вы сохраняете… проверьте значение функции json.decode.
4. ну ладно, хорошо видно!