Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListView中颤振两个ListView.builder_Android_Ios_Flutter_Listview_Dart - Fatal编程技术网

Android 在ListView中颤振两个ListView.builder

Android 在ListView中颤振两个ListView.builder,android,ios,flutter,listview,dart,Android,Ios,Flutter,Listview,Dart,好的,首先我想得到的是,我想在ListView中得到两个ListView.builder(使用physics:NeverScrollableScrollPhysics()),它们可以滚动,下面是我如何得到它的代码 工作代码 CustomScrollView(slivers: <Widget>[ SliverToBoxAdapter( child: Text("Artist"), ), SliverLi

好的,首先我想得到的是,我想在ListView中得到两个ListView.builder(使用physics:NeverScrollableScrollPhysics()),它们可以滚动,下面是我如何得到它的代码

工作代码

      CustomScrollView(slivers: <Widget>[
      SliverToBoxAdapter(
        child: Text("Artist"),
      ),
      SliverList(
        delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
          return Padding(
            padding: const EdgeInsets.only(top: 10, left: 20),
            child: Stack(
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(
                    top: maxHeight * 0.014,
                    left: maxWidth * 0.159,
                  ),
                  child: Column(
                    // mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      searchResults1[index].name == null
                          ? Container()
                          : Text(
                              searchResults1[index].name,
                              style: TextStyle(
                                fontSize: 12.0,
                                fontWeight: FontWeight.w600,
                              ),
                            ),
                    ],
                  ),
                ),
                Container(
                  // tag: 'recently-played1',
                  child: ClipRRect(
                    borderRadius: BorderRadius.circular(6.0),
                    child: searchResults1[index].image == null
                        ? Container()
                        : Image(
                            height: maxHeight * 0.0635,
                            width: maxWidth * 0.1306,
                            image: NetworkImage(searchResults1[index].image),
                            fit: BoxFit.cover,
                          ),
                  ),
                ),
              ],
            ),
          );
        },
        childCount: searchResults1.length
        ),
      ),
      SliverToBoxAdapter(
        child: Text("Songs"),
      ),
      SliverList(
        key: list2,
        delegate: SliverChildBuilderDelegate((BuildContext context, int i) {
          return Padding(
            padding: const EdgeInsets.only(top: 10, left: 20),
            child: Stack(
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(
                    top: maxHeight * 0.014,
                    left: maxWidth * 0.159,
                  ),
                  child: Column(
                    // mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      searchResults2[i].title == null
                          ? Container()
                          : Text(
                              searchResults2[i].title,
                              style: TextStyle(
                                fontSize: 12.0,
                                fontWeight: FontWeight.w600,
                              ),
                            ),
                      searchResults2[i].author == null
                          ? Container()
                          : Text(
                              searchResults2[i].author,
                              style: TextStyle(
                                  fontSize: 12.0,
                                  fontWeight: FontWeight.w600,
                                  color: Colors.grey),
                            )
                    ],
                  ),
                ),
                Container(
                  // tag: 'recently-played1',
                  child: ClipRRect(
                    borderRadius: BorderRadius.circular(6.0),
                    child: searchResults2[i].image == null
                        ? Container()
                        : Image(
                            height: maxHeight * 0.0635,
                            width: maxWidth * 0.1306,
                            image: NetworkImage(searchResults2[i].image),
                            fit: BoxFit.cover,
                          ),
                  ),
                ),
              ],
            ),
          );
        },
        childCount: searchResults1.length
        ),
      ),
    ]);
CustomScrollView(片段:[
滑动双轴适配器(
儿童:文本(“艺术家”),
),
银表(
委托:SliverChildBuilderDelegate((BuildContext上下文,int索引){
返回填充(
填充:仅限常量边集(顶部:10,左侧:20),
子:堆栈(
儿童:[
填充物(
填充:仅限边缘设置(
顶部:最大高度*0.014,
左:最大宽度*0.159,
),
子:列(
//mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
searchResults1[索引]。名称==null
?容器()
:文本(
searchResults1[索引]。名称,
样式:TextStyle(
字体大小:12.0,
fontWeight:fontWeight.w600,
),
),
],
),
),
容器(
//标签:“最近播放的1”,
孩子:ClipRRect(
边界半径:边界半径。圆形(6.0),
子项:searchResults1[索引]。图像==null
?容器()
:图像(
高度:最大高度*0.0635,
宽度:最大宽度*0.1306,
image:NetworkImage(searchResults1[index].image),
适合:BoxFit.cover,
),
),
),
],
),
);
},
childCount:searchResults1.length
),
),
滑动双轴适配器(
儿童:文本(“歌曲”),
),
银表(
关键字:列表2,
委托:SliverChildBuilderDelegate((BuildContext上下文,inti){
返回填充(
填充:仅限常量边集(顶部:10,左侧:20),
子:堆栈(
儿童:[
填充物(
填充:仅限边缘设置(
顶部:最大高度*0.014,
左:最大宽度*0.159,
),
子:列(
//mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
searchResults2[i]。标题==null
?容器()
:文本(
searchResults2[i]。标题,
样式:TextStyle(
字体大小:12.0,
fontWeight:fontWeight.w600,
),
),
searchResults2[i]。作者==null
?容器()
:文本(
searchResults2[i].作者:,
样式:TextStyle(
字体大小:12.0,
fontWeight:fontWeight.w600,
颜色:颜色。灰色),
)
],
),
),
容器(
//标签:“最近播放的1”,
孩子:ClipRRect(
边界半径:边界半径。圆形(6.0),
子项:searchResults2[i]。图像==null
?容器()
:图像(
高度:最大高度*0.0635,
宽度:最大宽度*0.1306,
image:NetworkImage(searchResults2[i].image),
适合:BoxFit.cover,
),
),
),
],
),
);
},
childCount:searchResults1.length
),
),
]);
但这里发生的事情是,两个列表很长,我有一个性能问题,滚动不平稳,有时甚至冻结。有东西告诉我这是因为收缩包装:真的,也许我错了。我想实现的重要一点是,我有一个标题,然后是一个listview.builder,然后是一个标题,最后是一个listview.builder。
谢谢大家的帮助。

问题可能是它是嵌套视图。尝试使用List.generate填充列小部件,而不是将内部ListView.builder与NeverScrollableScrollPhysics一起使用。然后,滚动将由外部ListView处理。您的内部列表:

Column(
      children: List.generate(
          myList,
          (index) => myWidget
更新:

而不是加载一个空图像

ClipRRect(
borderRadius: BorderRadius.circular(6.0),
child: searchResults1[index].image == null
? Container()
: Image(
height: maxHeight * 0.0635,
width: maxWidth * 0.1306,
image: NetworkImage(searchResults1[index].image),
fit: BoxFit.cover,

嘿,你为此使用了错误的小部件。将
CustomScrollView
SliverList
一起使用

不要在非常长的动态列表中使用
shrinkWrap:true
。为了使包覆面收缩能够工作,颤振需要确定列表中所有子窗口小部件的高度,这是一项繁重的计算任务。你能做的一个例子是

CustomScrollView(
 slivers: [
  SliverToBoxAdapter(child: Text("some")),
  SliverList(),
  SliverToBoxAdapter(child: Text("some")),
 ]
)

我试着像你们说的那个样,我可以告诉你们滚动更好,但当我滚动到接近第二个标题的某个地方时,整个应用程序在几秒钟内冻结,然后我可以继续滚动。谢谢你的快速回复啊,我会更新问题的。但我认为发生此错误是因为并非所有图像的文件路径中都有“Http”。这可能是个问题,为什么不试试
searchResults1[index]。image==null