Я воссоздаю свое приложение Диспетчер вызовов во Флаттере, и мне очень трудно хранить объекты и извлекать их в список.Использование SharedPreferences и GSON хорошо работает для полного Android-приложения, но, поскольку GSON не существует во Flutter, мне кажется, что хранение объектов в виде данных JSON - это путь.
Процесс должен быть следующим: Пользователь добавляет новый вызов на экране AddNewCall.Это включает в себя имя, номер телефона и необязательное описание. «Когда пользователь нажимает кнопку« Сохранить », из этого поля создается текст« Вызов ».Объект закодирован в строку следующим образом: String jsonData = json.encode(newCallObject);
Данные вызова JSON сохраняются в локальном хранилище приложения с помощью getApplicationDocumentsDirectory()
. Пользователь возвращается на главный экран, где файл JSON будет загружаться в приложение асинхронно вметод initState()
.Данные JSON декодируются и добавляются в ListView. Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку данные JSON добавляются в файл, это Шаг 3, он будет выглядеть следующим образом: {sampleData}{sampleData}
вместо того, чтобы заключаться в []
, какмассив.Приложение икнет при чтении в файле из-за этого.Мое решение до сих пор заключалось в том, чтобы разобрать содержимое файла в массив, вставить символ подчеркивания между} {и разбить полученную строку на массив типа String.Это выглядит так:
String jsonCalls = await file.readAsString();
jsonCalls = jsonCalls.replaceAll('}{', '}_{');
List<String> temp = jsonCalls.split('_');
Итак, теперь я получаю массив со строками JSON в них, но я застрял в возможности доступа к значениям в каждой строке JSON.Весь этот подход, который я использую, кажется слишком сложным.Должен быть способ получше, но я погуглил как сумасшедший и ничего не нашел.Ребята, вы в состоянии мне помочь?
Спасибо!