当前位置: 首页 > 知识库问答 >
问题:

ListTile颤振中未显示文本小部件

谢华彩
2023-03-14

我想在左边部分显示个人资料图像,中间部分显示名称和公司(一个在另一个下面),右边部分显示列表图块内的评论和评级。我能够正确显示图像,评论和评级,但文本不显示。我想实现这一点:

图片和评级之间的空白是我想要显示文本的地方(姓名和公司,一个在另一个下面)。不知道我在这里错过了什么。

下面的代码片段:

return new ListTile(
      contentPadding: EdgeInsets.all(8.0),
          leading: _getProfilePic(pro),
      //    title: new Text('${pro.fullname}'),
        title: new Column(
          children: <Widget>[
            new Row(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                new Text('${pro.fullname}')
              ],
            ),
          ],
        ),
    subtitle: Column(children: <Widget>[
      Padding(
        padding: EdgeInsets.all(3.0),
      ),
            new Row(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                new Text('${pro.company}', style: TextStyle(fontSize: 12.0),
                ),
              ],
            ),
          ],
    ),
      trailing: new Column(children: <Widget>[
        new Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: <Widget>[
            new StarRating(starCount: 5, rating: pro.rating, color: Colors.amber),
          ],
        ),
        new Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: <Widget>[
            new Text('${pro.reviewCount} reviews'),
          ],
        )
      ],) ,

在我看来,这似乎是一个返回列表视图的自定义方法,如下所示:

Widget buildProList(List pros,BuildContext context){List proTiles=new List();

pros.forEach((pro) {
  proTiles.add(proTile(pro, context));
});

return new ListView(
  children: proTiles
);

}

这就是它的实现:

ListTile proTile(Pro pro, BuildContext上下文){返回新的ListTile{

}


共有1个答案

劳彦
2023-03-14

您可以检查listile的源代码,以检查它是如何构建树的。如果您阅读ListTilewidgets中的文档,您会发现如下内容:

  /// The primary content of the list tile.
    ///
    /// Typically a [Text] widget.
    final Widget title;

    /// Additional content displayed below the title.
    ///
    /// Typically a [Text] widget.
    final Widget subtitle;

    /// A widget to display after the title.
    ///
    /// Typically an [Icon] widget.
    final Widget trailing;

因此,您必须考虑正在传递的小部件。

您的布局看起来很复杂,这是一个如何以非常简单的方式构建小部件的示例

    new ListTile(
            contentPadding: EdgeInsets.all(8.0),
            leading: _getProfilePic(pro),
            title: new Text('${pro.fullname}'),
            subtitle: Text('${pro.company}',
              style: TextStyle(fontSize: 12.0),
            ),
            trailing: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new StarRating(starCount: 5, rating: pro.rating, color: Colors.amber),
                new Text('${pro.reviewCount} reviews'),
              ],
            ),
          ), 

另一种不使用ListTile的解决方案:

  return Row(
        children: <Widget>[
        _getProfilePic(pro),

          Expanded(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Text(
                  '${pro.fullname}',
                  overflow: TextOverflow.ellipsis,
                ), 
                new Text(
                  '${pro.company}',
                  style: TextStyle(fontSize: 12.0), 
                ),
              ],
            ),
          ),

          new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new StarRating(starCount: 5, rating: pro.rating, color: Colors.amber)
              new Text('${pro.reviewCount} reviews'),
            ],
          )
        ],
      );

注意:别忘了检查子部件的父约束

 类似资料:
  • 我向上看了看这里和酒吧。dev和flatter文档,但找不到(或者找不到我的查询)这个简单任务的任何解决方案。 我想显示一个,其字母从上到下排列,同时保持字母方向的默认值。因此,旋转的将不起作用。 我期望的结果是: 此外,我还需要将包装到下一行(本例中为列),需要一个高度参数来限制每列从上到下的字母数。 如果最后一部分太难实现,我愿意接受单列解决方案的想法。

  • 我很熟悉flutter中的无状态和有状态小部件,但我很好奇为什么我们不将有状态小部件定义为无状态小部件?为什么我们需要声明两个不同的类,一个用于createstate方法,一个用于实际的状态实现?

  • 我得到下面的异常,而在Android Studio运行flutter代码。 I/颤振(5360):══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ I/flatter(5360):在构建文本(“xyz”)时抛出以下断言:I/flatter(5360):未找到方向性小部件。I/flatter(5

  • Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart

  • 我正在研究文本小部件在Flutter中是如何工作的。我知道这些小部件只是蓝图。它是实现小部件的元素。元素生成一个RenderObject来布局并在屏幕上绘制小部件。我想这就是它的工作原理。 文本小部件的源代码很容易找到。在这儿 但是我似乎找不到任何叫做的东西。谁在做文本渲染?它的元素是什么?

  • 我正在尝试创建一个非常简单的应用程序,当点击中心小部件时,列表中的元素会显示出来。 这是我的代码: 没有显示任何错误,但同时,我的目标没有达到,因为没有显示任何文本,即使我添加了这个代码打印(yourList[randomIndex]),也不会在终端中打印任何内容;。我如何显示文本,并使打印出现?