【问题标题】:ListView.builder don't work inside a ColumnListView.builder 在列内不起作用
【发布时间】:2021-10-01 18:07:30
【问题描述】:

当我将 ListView.builder 或 GridView.builder 放入 Column 时,我的应用程序性能“下降”

我的代码是这样的

Scafold(
   body:RefreshIndicator(
         onRefresh: () {
        return refreshUI(setState,);
      },
      child: SingleChildScrollView(
        controller: scrollController,
        child: Column(
          children: [
            ListView.builder(
                itemCount: productListObj.length,
                itemBuilder: (BuildContext context, int index) {
                  return InkWell(
                        onTap: (){
                          showDialog(context: context, builder: 
                            (BuildContext context){
                            return DetailsProducts(context,productListObj[index]);
                          });
                        },
                        child: cards(index)
                    );
                  })
            ), 
            //Other Widgets
         ]
      )
   )
)

ListView 是一个图片产品列表,当我向下滚动很多时,流动性正在下降,因此我改为

Scafold(
   body:RefreshIndicator(
         onRefresh: () {
        return refreshUI(setState,);
      },
      child: 
        ListView.builder(
           controller: scrollController,
           itemCount: productListObj.length,
           itemBuilder: (BuildContext context, int index) { 
           
           return 
             InkWell(
                onTap: (){
                  showDialog(context: context, builder: (BuildContext context){
                    return DetailsProducts(context,productListObj[index]);
                  });
                },
                child: cards(index, price)
            );
           }
       ), 
   )
)

但是,现在我的列表下方没有其他小部件。

我不明白为什么会这样......

【问题讨论】:

  • 能否分享完整代码
  • ListView 小部件替换column 小部件。
  • @YeasinSheikh 我更新了帖子
  • 也可以添加cards小部件
  • 如果您使用的是列,则需要使用一个扩展的小部件来包装 ListView 之一。不要使用 SingleChildScrollView,因为你会破坏整个逻辑。

标签: flutter dart listview


【解决方案1】:

您并不是真的想将 ListView 与 SingleChildScrollViewColumn 一起使用 - 这是其中之一:

我认为在我与您分享的视频中很清楚in the last post

return Scaffold(
    body: SafeArea(
  child: RefreshIndicator(
      onRefresh: () {
        return refreshUI(
          setState,
        );
      },
      child: ListView.builder(
          itemCount: productListObj.length,
          itemBuilder: (BuildContext context, int index) {
            return InkWell(
                onTap: () {
                  showDialog(
                      context: context,
                      builder: (BuildContext context) {
                        return DetailsProducts(
                            context, productListObj[index]);
                      });
                },
                child: cards(index));
          })),
  //Other Widgets
),);

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2020-12-26
    • 2021-06-28
    • 2018-12-02
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多