在文本小部件中使用变量

时间:2018-08-10 18:21:20

标签: dart flutter

我试图在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;
}

我遇到了这个问题:

Text Issue

2 个答案:

答案 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被假定为IconText,因为它们必须是恒定的,以便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的含义,因为这可能在您的应用程序中不起作用。

来自news.dartlang.org,

  

“ 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,然后就可以了。