У меня есть приложение, которое дает пользователю возможность вводить и сохранять текст в TextField
. Он отлично работает, если текст, введенный в TextField
, является одной продолжающейся строкой. Если пользователь нажимает клавишу возврата / ввода для создания новой строки в TextField
, он не сохраняется в файл JSON должным образом. Есть ли способ сохранить многострочный текст из файла TextField
в файл JSON?
Flexible(
child: TextField(
controller: _notesController,
obscureText: false,
maxLines: null,
onChanged: (value) {
// updates playterNotes to the text inputed
playerList.players[index].playerNotes = value;
// updates JSON file
writePlayerData(playerList);
},
style: TextStyle(
color: Color.fromRGBO(255, 174, 3, 1.0),
letterSpacing: 2.0,
fontSize: 14.0,
fontFamily: 'Smash'
),
),
)
Изменить: если файл JSON не сохраняется правильно, я загружаю заполнитель JSON .
Это JSON, распечатанный после начальной «однострочной»
I/flutter ( 4058): {"players":[{"id": "GitHub Test","setCount": "0 - 0","characters": {"char1": "cloud","char2": ""},"notes": "single line"}]}
Это JSON, распечатанный после «многострочного» * 1012 *
I/flutter ( 4058): {"players":[{"id": "GitHub Test","setCount": "0 - 0","characters": {"char1": "cloud","char2": ""},"notes": "single line
I/flutter ( 4058): multi line"}]}
Тест
WritePlayerData:
Future<File> writePlayerData(PlayerList playerList) async {
final file = await _localFile;
return file.writeAsString(PlayerListtoJson(playerList));
}
Какой вызывает:
String PlayerListtoJson(PlayerList playerList) {
String playerJson = "";
if (playerList.players.length > 0 ) {
playerJson = '{"players":[${playerToJson(playerList.players)}]}';
}
return playerJson;
}
String playerToJson(List<Player> players) {
String playerString = "";
for(int i = 0; i < players.length; i++) {
playerString += '{"id": "${players[i].playerId}",'
'"setCount": "${players[i].playerSetCount}",'
'"characters": ${characterToJson(players[i].playerChars)}'
'"notes": "${players[i].playerNotes}"}';
if (!(i == players.length - 1)) {
playerString += ',';
}
}
return playerString;
}
String characterToJson (Characters characters) {
String playerCharacters = '{"char1": "${characters.char1}",'
'"char2": "${characters.char2}"},';
return playerCharacters;
}
Ссылка JSON:
{
"players": [
{
"id": "Filler Character",
"setCount": "0 - 0",
"characters": {
"char1": "",
"char2": ""
},
"notes": "Lorem ipsum dolor sit amet, consectetur."
}
]
}