繁体   English   中英

如何自动将小部件添加到脚手架的主体?

[英]How can I automatically add widgets to the body of my scaffold?

我正在尝试让我的脚手架返回列表的主体自动构建,就像社交媒体应用程序上的帖子一样。 但是,它只返回和清空容器,只有它的背景颜色。

Widget _buildListingWidgets(List<Widget> listing) {
  return ListView.builder(
    itemBuilder: (BuildContext context, int index) => listing[index],
    itemCount: listing.length,
  );
}
@override
Widget build(BuildContext context) {
  final listing = <Listing>[];
  for (var i = 0; i < _listingNames.length; i++) {
    listing.add(Listing(
      describe: _describe[i],
      building: _building[i],
      location: _location[i],
      availability: _availability[i],
    ));
  }
  final listView = Container(
    color: Colors.black,
    padding: EdgeInsets.symmetric(horizontal: 8.0),
    child: _buildListingWidgets(listing),
  );

  ...
return Scaffold(
  appBar: appBar,
  body: listView,

  ...
);

保持您现在的代码,并将 ListViewBuilder 修改为如下所示:

Widget _buildListingWidgets(List<Widget> listing) {
  return ListView.builder(
    itemCount: listing.length,
    itemBuilder: (BuildContext context, int index) {
    return Container(child:
     Text(listing[index].describe),
     );
    }        
  );
}

它应该工作。

您似乎在不使用其固有功能的情况下构建 ListView 的方式过于复杂。 你可以这样做:

class Issue66841743 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.black,
      padding: EdgeInsets.symmetric(horizontal: 8.0),
      child: MyList(listingNames: listing,),
    );
  }
}

class MyList extends StatelessWidget {
  final List listingNames;

  const MyList({Key key, this.listingNames}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
        itemCount: listingNames.length,
        itemBuilder: (context, index) {
          return Listing(
            describe: _describe[i],
            building: _building[i],
            location: _location[i],
            availability: _availability[i],
          );
        }
    );
  }
}

请记住,您没有向我们提供其他列表、_describe、_building、_location 和 _availability。 这些也向我表明您的代码中还有其他问题。 因为您很可能拥有一个 class ,其中包含与某个列表有关的所有属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM