使用变量作为参数的无效常量值

时间:2019-04-11 15:02:33

标签: dart flutter

var textSize = 10.0;
// or
double textSize = 10.0;

进入Text Flutter小部件

child: const Text('Calculate Client Fees',
                   style: TextStyle(fontSize: textSize),)

此处显示错误

  

无效的常量值

我们是否必须强制使用const值?为什么我们不能使用vardouble

6 个答案:

答案 0 :(得分:3)

您正在将Text小部件声明为const,这要求其所有子级也必须是const。如果要解决此问题,在这种情况下,请勿使用const Text小部件,因为要传递非常量变量。

之所以这样做,是因为Flutter使用const关键字作为小部件的标识符,以使其从不重建,因为它将在编译时进行评估,并且仅进行一次 em>。因此,它的每个部分也必须是恒定的。

double textSize = 10.04;
// ...
child: Text('Calculate Client Fees', style: TextStyle(fontSize: textSize))

详细了解in this article

答案 1 :(得分:1)

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("Q9") = Range("Q10") And Range("Q6") = Range("Q9") Then ' To check four cells are equal to respective to their data or not.
MsgBox "Number of coming staffs were matched with pick and drop entries, click ok to check duplicate entries.", vbOKOnly, ""

Else
If Range("C6:21") <> Range("I6:I25") And Range("E6:E21") <> Range("K6:K25") Then  'for duplicate values in the mentioned column range

MsgBox "Click OK to PRINT (Ctrl+P)", vbOKOnly, " "
bTemp = Application.Dialogs(xlDialogPrint).Show

    Else
        MsgBox "Check Schedule Properly or generate mail for additional car required by chosing Car Type", vbOKOnly, " "

End If
End If
End Sub

应为:

child: const Text('Calculate Client Fees',
                   style: TextStyle(fontSize: textSize),)

答案 2 :(得分:0)

正如@creativecreatorormaybenot所说,您正在使用const Text(),这就是为什么您必须在其中使用const值的原因。 您可以使用

const double textSize = 10.0;

const textSize = 10.0;

就像这种情况。

Padding(
  padding: const EdgeInsets.all(value), // this value has to be a `const` because our padding: is marked const
  child: Text("HI there"),
);


Padding(
  padding: EdgeInsets.all(10), // any double value
  child: Text("HI there"),
);

答案 3 :(得分:0)

在dart中,当您在const构造函数中将某些内容作为参数传递时,编译器确保在执行代码期间不会更改设置为默认值的值。

因此,无效的常数警告。

要解决此问题,您应该从文本前面删除const关键字。

答案 4 :(得分:0)

您应该删除关键字const

使用时,它会将widget放入缓存中。

并且您不能等待小部件中的值并再次将小部件作为常量放置。当你想这样做时,你不应该把你的小部件保持不变。

这样做:

double textSize = 10.0;
child: Text('Calculate Client Fees', style: TextStyle(fontSize: textSize),)

答案 5 :(得分:-1)

如果要使用vardouble textSize = 10.0;,则文本小部件不能为const。删除Text()之前的const

  child: Text('Calculate Client Fees', style: TextStyle(fontSize: textSize),)