Listview内部的futurebuilder内部的ListView.builder

时间:2020-07-21 08:12:06

标签: flutter dart

我想使主页可滚动,这意味着我想在主体上滚动所有内容,因此我创建了一个列表视图,并且在列表视图内还有其他小部件,在这些小部件下,我想展示一个具有另一个listview.builder,但我不希望它单独滚动,我希望它与主屏幕上的其他小部件一起滚动

这是我的主屏幕正文:

for (const attendee of event.attendees as ExtendedGCalAttendee[]) {...}

body: SafeArea( child: ListView( children: <Widget>[ Search(), FeaturedProducts(), OnSaleProducts(), ], ), ), 是其中具有futurebuilder的小部件,这是代码

OnSaleProducts()

2 个答案:

答案 0 :(得分:0)

然后,您不应在OnSalesProduct()中使用ListView,而应使用简单的列!

Column(children: List.generate(count, (int index) => widget(index))

答案 1 :(得分:0)

希望您想知道的是:

  1. 滚动身体上的一切
  2. 在可滚动视图中,想要显示具有以下功能的未来构建器 另一个 listview.builder
  3. 不希望它单独滚动它与另一个滚动 主屏幕中的小部件

让我们试试这个代码,希望你能把你的回答者和解决方案放在一起:

SingleChildScrollView(
        child: Column(
          children: <Widget>[
            Search(),
            FeaturedProducts(),
            OnSaleProducts(),
          ],
        ),
      ),

现在为 OnSaleProducts() 小部件执行此操作:

  Widget build(BuildContext context) {
    return Container(
      height: MediaQuery.of(context).size.height, // better for fixed size 
      width: double.infinity,
      child: FutureBuilder<PopularFoodList>(
              future: getOnSaleProduct(),
              builder: (BuildContext context, snapshot) {
                if (snapshot.hasData) {
                  return ListView.builder(
                      scrollDirection: Axis.vertical,
                      itemCount: 9,
                      itemBuilder: (context, index) {
                         var item = snapshot.data[index]; // snapshot.data.anotherProperty[index]; // If your model has anotherProperty
                         return InkWell(child: ProductCard(name: item.name, price: item.price, picture: '', onSale: true));
                      });
                } else if (snapshot.hasError) {
                  return Center(child: Text(snapshot.error.toString()));
                }
                return Center(child: CircularProgressIndicator());
              })

    );
  }