if (data! = null) NOT IS NULL игнорируется - PullRequest
0 голосов
/ 02 декабря 2019

Я учусь программировать в DART с использованием FLUTTER, но я не понимаю, я использую эту функцию для получения данных SharedPreferences

Iterable decoded = jsonDecode(data);
List<Item> result = decoded.map((x) => Item.fromJson(x)).toList();

, но если я пытаюсь отправитьNULL даст ошибку! поэтому я ставлю это, если

if(data != null)

, но оно проходит, даже будучи нулевым

мой код

Future load() async{

    var prefs = await SharedPreferences.getInstance();
    var data = prefs.getString('data');

    // justing for testing
    print(data);

    if(data != null){

      // another test
      print("NOT IS NULL");
      Iterable decoded = jsonDecode(data);
      List<Item> result = decoded.map((x) => Item.fromJson(x)).toList();
      setState(() {
        widget.itens = result;
      });

    }else{
      print("IS NULL");
    }
  }

, и посмотрите журнал отладки

Restarted application in 3.464ms.
flutter: [null]
flutter: NOT IS NULL

извините, мой плохой английский

Ответы [ 3 ]

1 голос
/ 02 декабря 2019

Обратите внимание, что print(data) не печатал null;напечатано [null] (то есть в квадратных скобках).

Это означает, что data - это , а не null. Это List, содержащий один элемент null.

0 голосов
/ 02 декабря 2019

Список, содержащий один нулевой элемент. Здесь данные не равны нулю. Попробуйте добавить новые элементы в sharedPreference и протестируйте снова.

0 голосов
/ 02 декабря 2019

Попробуйте просто if(data), поскольку значение может быть неопределенным, и в этом случае оно является ложным, но не равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...