DART编辑器,“死代码”声明

时间:2014-09-13 19:40:42

标签: dart

我在下面的代码中单击menuicon(定义为#lines)时尝试切换菜单。

在执行中,一切都很好,我的意思是,一旦我在DARTIUM中运行代码,它就可以按照我的意愿运行,菜单会在点击时切换。

但是在Dart编辑器中,我在附加的图片中收到了错误信息,我的代码中是否有错误?

void main() {
  .... 
   var menuToggle =querySelector('#lines')
      ..onClick.listen((e)=>fonixMenu.hidden=true ? !fonixMenu.hidden : false);  
  ....
 }

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为它告诉您代码中的false永远不会到达,因为true会导致返回表达式的第一部分。

您可以将其简化为:

onClick.listen((e) => fonixMenu.hidden = !fonixMenu.hidden);

答案 1 :(得分:0)

我认为你真正想做的是

void main() {
  .... 
   var menuToggle =querySelector('#lines')
      ..onClick.listen((e) => fonixMenu.hidden = fonixMenu.hidden == true ?  = false : fonixMenu.hidden = true);  
                                            // ^ 2nd =
  ....
 }

但是,当您确保fonixMenu.hidden永远不会null时,Danny的解决方案会更加优雅,因为

var x = null;
var Y = !x 

导致异常:

type 'Null' is not a subtype of type 'bool' of 'boolean expression'.

一个简单的零安全变体

   var menuToggle =querySelector('#lines')
      ..onClick.listen((e) => fonixMenu.hidden = fonixMenu.hidden == true ? false : true);