if(data!= null)NOT IS NULL被忽略

时间:2019-12-02 01:52:56

标签: flutter dart sharedpreferences

我正在学习使用FLUTTER在DART中编程 但我处在一种我不了解的情况下, 我正在使用此功能获取SharedPreferences数据

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

但是如果我尝试发送为null将会给出错误! 所以我把这个如果

if(data != null)

但是它甚至通过了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 个答案:

答案 0 :(得分:1)

请注意,print(data)没有打印null;它打印了[null](即带有方括号)。

这意味着data不是 null。它是一个List,其中包含单个null元素。

答案 1 :(得分:0)

包含单个 null 元素的列表。此处的数据不为null。 尝试在sharedPreference中添加新元素,然后再次进行测试。

答案 2 :(得分:-1)

仅尝试if(data),因为该值可以是不确定的,在这种情况下,它是一个假值,但不等于null。