创建具有不同类型项目的列表

时间:2019-08-28 13:23:41

标签: android listview flutter dart

我想创建一个水平listView,其中第一项始终是+图标。获取图像后,它将移至第二项,依此类推。

这是我尝试过的

  Container(
         color: const Color(0xFF00FF00),
         padding: EdgeInsets.only(top: 15),
         height: MediaQuery.of(context).size.height * 0.25,
         child: ListView.builder(
             scrollDirection: Axis.horizontal,
             itemCount: 1,
             itemBuilder: (context, index) {
              return _buildRow();
                  }),
                      )

Widget _buildRow() {
    return IconButton(
      icon: Center(
        child: Icon(
          Icons.camera,
          size: 30.0,
        ),
      ),
      onPressed: () {
        getImage();
      },
    );
  }

1 个答案:

答案 0 :(得分:1)

您可以仅使用加号小部件开始小部件列表。然后,您可以在列表中使用dart的插入功能将以下窗口小部件添加到窗口小部件的第一个位置。像这样:

listWidgets.insert(0, yourWidget);

加上小部件始终是列表的最后一项,并显示在最后位置。

 Widget initialWidget = _buildRow();
 List<Widget> listWidgets = [initialWidget];
 Container(
     color: const Color(0xFF00FF00),
     padding: EdgeInsets.only(top: 15),
     height: MediaQuery.of(context).size.height * 0.25,
     child: ListView.builder(
         scrollDirection: Axis.horizontal,
         itemCount: 1,
         itemBuilder: (context, index) {
          return listWidgets[index]
     ),
                  )

Widget _buildRow() {
return IconButton(
  icon: Center(
    child: Icon(
      Icons.camera,
      size: 30.0,
    ),
  ),
  onPressed: () {
    Widget yourWidget = <your-logic-to-create-widget>;
    setState(() {
       listWidgets.insert(0, yourWidget);
    })
  },
);
}