我试图在Text Widget中使用一个变量,它表示无效的const值,因此,我需要使用const,但是我以动态方式使用Text Widget。有没有办法使用带有变量的文本?还是我可以使用另一个小部件?
我有这样的东西:
class PlaceCardState extends StatelessWidget {
PlaceCardState(this._placeCard);
Place _placeCard;
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.album),
title: Text(_placeCard.title),
subtitle: const Text('Come and dance tonight!'),
);
}
}
place.dart
class Place {
Place([this.title = '', this.description = '', this.image='', this.value=0.0]);
String title;
String description;
String image;
double value;
}
我遇到了这个问题:
答案 0 :(得分:1)
更改此:
const ListTile(
leading: const Icon(Icons.album),
title: Text(_placeCard.title),
subtitle: const Text('Come and dance tonight!'),
);
对此:
const ListTile(
leading: const Icon(Icons.album),
title: const Text(_placeCard.title),
subtitle: const Text('Come and dance tonight!'),
);
由于屏幕快照ListTile
中的常量是常量,因此所有属性也需要常量,因此请在const
之前添加Text(_placeCard.title),
答案 1 :(得分:0)
Const
被假定为Icon
和Text
,因为它们必须是恒定的,以便ListTile
可以整体恒定。
所以写起来是一样的
const ListTile(
leading: const Icon(Icons.album),
title: const Text(_placeCard.title),
subtitle: const Text('Come and dance tonight!'),
);
为
const ListTile(
leading: Icon(Icons.album),
title: Text(_placeCard.title),
subtitle: Text('Come and dance tonight!'),
);
但是您似乎仍然会混淆const
的含义,因为这可能在您的应用程序中不起作用。
“ const”的含义在Dart中更加复杂和微妙。 const修改值。您可以在创建收藏集时使用它,例如 const [1,2,3],以及在构造对象(而不是new)时 const Point(2,3)。在这里,const表示对象的整个深度 状态可以在编译时完全确定,并且该对象 将被冻结并且完全不变
所以这意味着你可以说
const ListTile(
leading: Icon(Icons.album),
title: Text("foo"),
subtitle: Text('Come and dance tonight!'),
);
但是在运行应用程序时不创建该对象常量,因为在编译时没有所有数据。
您不应该只使用const,然后就可以了。