Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Dart 如何以组方式创建ListView?_Dart_Flutter - Fatal编程技术网

Dart 如何以组方式创建ListView?

Dart 如何以组方式创建ListView?,dart,flutter,Dart,Flutter,在API中返回20条这样的记录 [ { ... “p”:1.0 ... }, { ... “p”:1.1 ... }, { ... “p”:2.0 ... }, { “p”:2.1 }, { “p”:3.0 }, { “p”:3.1 }, ] 1.0到1.1平均行数第一,2.0到2.1平均行数第二 我创建了Listview,并使用了其他逻辑,但我不知道如何在图片下方进行分组 Widget createListView(BuildContext context, AsyncSnapshot sna

在API中返回20条这样的记录

[ { ... “p”:1.0 ... }, { ... “p”:1.1 ... }, { ... “p”:2.0 ... }, { “p”:2.1 }, { “p”:3.0 }, { “p”:3.1 }, ]

1.0到1.1平均行数第一,2.0到2.1平均行数第二

我创建了Listview,并使用了其他逻辑,但我不知道如何在图片下方进行分组

Widget createListView(BuildContext context, AsyncSnapshot snapshot) {
    List<Data> values = snapshot.data;
    return ListView.builder(
      padding: new EdgeInsets.only(top: 8.0, right: 0.0, left: 0.0),
      itemCount: getItemCounter(values),
      itemBuilder: (BuildContext context, int index) {
        return GridView.count(
          physics: ScrollPhysics(),
          shrinkWrap: true,
          crossAxisCount: 4,
          children: List.generate(2, (index) {
            return GridTile(
              child: GestureDetector(
                onTap: () => Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) =>
                            assets2(values[index].i, widget._url))),
                child: Column(
                  children: [
                    Card(
                      child: Container(
                        decoration: BoxDecoration(
                            border: Border.all(
                                color: Colors.blueAccent, width: 1.5)),
                        child: Stack(
                          children: <Widget>[
                            SvgPicture.asset(
                              'assets/images/icon1.svg',
                              height: 50.0,
                            ),
                          ],
                        ),
                      ),
                    ),

                    Expanded(
                      child: Text(values[index].d, textAlign: TextAlign.center, style: TextStyle(fontSize: 10.0),),
                    ),
                  ],
                ),
              ),
            );
          }),
        );
      },
    );
    //    itemCount: 10,
  }

  getItemCounter(List<Data> values){
    List iPoint = [];
    List distictI = [];

    for(int i = 0; i < values.length; i++){
      iPoint.add(values[i].p.toInt());
    }
    //remove duplicate
    distictI = iPoint.toSet().toList();
   return distictI.length;

  }
小部件createListView(构建上下文上下文,异步快照快照){ 列表值=snapshot.data; 返回ListView.builder( 填充:仅限新边集(顶部:8.0,右侧:0.0,左侧:0.0), itemCount:getItemCounter(值), itemBuilder:(构建上下文,int索引){ 返回GridView.count( 物理:物理(), 收缩膜:对, 交叉轴计数:4, 子项:列表。生成(2,(索引){ 返回网格( 儿童:手势检测器( onTap:()=>Navigator.push( 上下文 材料路线( 生成器:(上下文)=> assets2(值[index].i,widget.\u url)), 子:列( 儿童:[ 卡片( 子:容器( 装饰:盒子装饰( 边界:边界( 颜色:Colors.blueAccent,宽度:1.5), 子:堆栈( 儿童:[ SvgPicture.asset( “assets/images/icon1.svg”, 身高:50.0, ), ], ), ), ), 扩大( 子项:文本(值[index].d,textAlign:textAlign.center,样式:TextStyle(fontSize:10.0)), ), ], ), ), ); }), ); }, ); //物品计数:10, } getItemCounter(列表值){ 列表i点=[]; 列表区i=[]; 对于(int i=0;i 我需要喜欢这个输出,
我在我的项目中做了类似的事情

CustomScrollView
SliverList
一起使用,将
GridView
primary:false一起使用

以下是特定于您的示例的代码:

M类扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终数据=[
{“p”:1.0},
{“p”:1.1},
{“p”:2.0},
{“p”:2.1},
{“p”:3.0},
{“p”:3.1},
];
最终列表计数=
data.map((m)=>m[“p”]).reduce((a,b)=>max(a,b)).floor();
返回自定义滚动视图(
条子:[
银表(
代表:SliverChildBuilderDelegate(
(上下文,一){
最终项目=数据
其中((m)=>i+1A[“p”]。与(b[“p”])相比;
返回GridView.builder(
itemCount:items.length,
收缩膜:对,
主要:错误,
gridDelegate:SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent:70.0,
childAspectRatio:0.9,
),
itemBuilder:(上下文,i){
最终项目=项目[i];
//TODO实现此方法以生成单个项
返回(项目);;
},
);
},
childCount:listCount,
),
),
],
);
}
}
编辑:添加了特定于问题的代码示例。
代码美化。

我在项目中做了类似的事情

CustomScrollView
SliverList
一起使用,将
GridView
primary:false一起使用

以下是特定于您的示例的代码:

M类扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终数据=[
{“p”:1.0},
{“p”:1.1},
{“p”:2.0},
{“p”:2.1},
{“p”:3.0},
{“p”:3.1},
];
最终列表计数=
data.map((m)=>m[“p”]).reduce((a,b)=>max(a,b)).floor();
返回自定义滚动视图(
条子:[
银表(
代表:SliverChildBuilderDelegate(
(上下文,一){
最终项目=数据
其中((m)=>i+1A[“p”]。与(b[“p”])相比;
返回GridView.builder(
itemCount:items.length,
收缩膜:对,
主要:错误,
gridDelegate:SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent:70.0,
childAspectRatio:0.9,
),
itemBuilder:(上下文,i){
最终项目=项目[i];
//TODO实现此方法以生成单个项
返回(项目);;
},
);
},
childCount:listCount,
),
),
],
);
}
}
编辑:添加了特定于问题的代码示例。
代码被美化。

什么需要构建项目?这将构建你的网格项目(图像资产项目)GridTilepart代码中也有小错误,我只是纠正了它。where()part可以修复这个bug吗?什么需要构建项目?它将构建你的网格项目(图像资产项目)
GridTile
part还有一个小bug在