0

我想用 for 循环替换卡。这是我显示输出的屏幕主体

body: FutureBuilder<List>
       (
         future: db.getAllRecords("EMPLOYEE"),
        initialData: List(),
        builder: (context,snapshot){
          return snapshot.hasData
              ? ListView.builder(
                itemCount: snapshot.data.length,
                itemBuilder: (_, int position){
                 final item =snapshot.data[position];
                 return Card(
                   child:ListTile(
                     title: Text(
                        snapshot.data[position].row[1]
                     ),
                   ),
                 );
                },
          )
             : Center(
                child:CircularProgressIndicator() ,
              );
4

1 回答 1

0

实际上,您编写的方式是 Flutter 中的标准实现方式。您可以调用默认ListView构造函数而不是ListView.builder一个,然后调用 for 循环,但这不是最佳做法。

List<Widget> _buildListItems(BuildContext context, List<...> list) {
    final output = List<Widget>();
    for (var item in list) {
        output.add(
            Card(
                child: ListTile(
                    title: Text(item.row[1]),
                ),
            ),
        );
    }
    return output;
}

//... back to your build(context) body

    body: FutureBuilder<List>(
        future: db.getAllRecords("EMPLOYEE"),
        builder: (context, snapshot) {
            return snapshot.hasData
                ? ListView(
                    children: [
                        ..._buildListItems(context, snapshot.data),
                    ],
                )
                : Center(
                    child: CircularProgressIndicator(),
                );
        }
    )
于 2020-11-03T16:12:43.167 回答