var和最终变量中的UI实现片段之间的差异

时间:2019-05-29 17:08:15

标签: flutter dart

Google的example展示了如何在变量中存储用户界面。

var stars = Row(
  mainAxisSize: MainAxisSize.min,
  children: [
    Icon(Icons.star, color: Colors.green[500]),
    Icon(Icons.star, color: Colors.green[500]),
    Icon(Icons.star, color: Colors.green[500]),
    Icon(Icons.star, color: Colors.black),
    Icon(Icons.star, color: Colors.black),
  ],
);

final ratings = Container(
  padding: EdgeInsets.all(20),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
    children: [
      stars,
      Text(
        '170 Reviews',
        style: TextStyle(
          color: Colors.black,
          fontWeight: FontWeight.w800,
          fontFamily: 'Roboto',
          letterSpacing: 0.5,
          fontSize: 20,
        ),
      ),
    ],
  ),
);

请注意,stars部分用户界面存储在var变量中,而ratings部分用户界面存储在final变量中。

  

var stars = Row(...);   最终评分=集装箱(...);

我的问题是:

  • 这种差异背后的动机是什么?
  • 何时将一个UI存储在var变量中以及何时存储在final变量中?

1 个答案:

答案 0 :(得分:0)

顾名思义,var表示其值以后可以更改,而final则是其值一旦分配就永远不会更改。因此,您几乎可以使用它们中的任何一个,这完全取决于您的需要。

var widget = Container(color: Colors.black);
widget = Container(color: Colors.white); // no problem

final widget2 = Container(color: Colors.black);
widget2 = Container(...)// error you can't assign anything to this widget again