Флаттер sqlite запрос превращает нулевой столбец в пустую строку - PullRequest
0 голосов
/ 03 мая 2020

В таблице sqlite у меня нулевые столбцы. Я сделал запрос, чтобы получить все данные из указанного столбца c и отобразить его данные в List<Map<String, dynamic>>:

List<Map<String, dynamic>> maps = List();
final db = await database;
var result = await db.query('tools_table', where: 'LifeCycle <> 2');
result.forEach((val) {
  maps.add(val);
});

, но нулевой столбец преобразуется в «нулевой», и когда я хочу десериализовать список карты в объект:

ToolsModel.fromJson(Map<String, dynamic> json) {
...
    if (json['triggerImagesUrl'] != null) {
      triggerImagesUrl = List<String>();
      var job = jsonDecode(json['triggerImagesUrl']);
      job.forEach((v) {
        triggerImagesUrl.add(v);
      });
    }

Я получил ошибку, потому что json ['TriggerUrl'] является нулевым, просто нулевым, а var job = jsonDecode(json['TriggerUrl']); job - нулевым, а job.forEach вызывает исключение.

Почему нулевой столбец преобразуется в "нулевой" и как я могу предотвратить это действие?

1 Ответ

1 голос
/ 03 мая 2020

Попробуйте это в дротике

import 'dart:convert';
void main() {
  List<String> urls = null;
  var d = jsonEncode(urls);
  print(d  is String);
  print(jsonDecode(d) is String);
}

Вы получите следующий вывод

true
false

Так что jsonEncode(urls) возвращает null строку, если urls равно нулю. Изменить это

Map<String, Object> mapToCacheActivatedToolItem(LogData.Data item) {
    var newMap = {
      "TriggerImagesUrl": item.triggerImagesUrl == null ? null : jsonEncode(urls)
    };
    return newMap;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...