如何让flutter显示来自json的大量数据

时间:2021-06-09 05:48:19

标签: flutter flutter-futurebuilder

我得到了一个包含未来构建器的颤振页面,它的结果显示在列表视图构建器中。当我得到少量数据时,flutter 显示数据没有任何问题。但是当我得到大量数据时,它什么也不显示。

我从这个问题中得到的是,当我获取大量数据时,未来的构建器在页面显示之前还没有完成获取数据。

如何让页面在显示之前等待未来完成获取数据?

谢谢

FutureBuilder<List<SalesTable>>(
            future: SelectSalesTable.getSalesTable(widget.kodesales,
                daterange1.format(widget.tgl1), daterange2.format(widget.tgl2)),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.none) {
                return new Text('No Data..!!');
              } else if (snapshot.connectionState == ConnectionState.waiting) {
                return new Center(child: CircularProgressIndicator());
              } else {
                if (snapshot.hasData) {
                  List<SalesTable> data = snapshot.data;
                  return Container(
                      child: Column(
                    children: [
                      ListView.builder(
                        shrinkWrap: true,
                        physics: NeverScrollableScrollPhysics(),
                        itemBuilder: (context, index) {
                          return Column(
                            children: [
                              Padding(
                                padding: const EdgeInsets.fromLTRB(5, 5, 5, 5),
                                child: Card(
                                  shadowColor: Colors.grey,
                                  shape: RoundedRectangleBorder(
                                    borderRadius: BorderRadius.circular(10.0),
                                  ),
                                  elevation: 10,
                                  child: Padding(
                                    padding:
                                        const EdgeInsets.fromLTRB(5, 10, 5, 10),
                                    child: ListTile(
                                      title: Text(
                                          data[index].name +
                                              ' | ' +
                                              data[index].Category,
                                          style: TextStyle(
                                              fontSize: 20,
                                              fontWeight: FontWeight.bold)),
                                      subtitle: Column(
                                        children: <Widget>[
                                          Row(
                                            children: <Widget>[
                                              Expanded(
                                                child: Text(
                                                    'Date : ' +
                                                        dateformat3.format(
                                                            data[index]
                                                                .date1),
                                                    style: TextStyle(
                                                        fontWeight:
                                                            FontWeight.bold)),
                                              )
                                            ],
                                          ),
                                        ],
                                      ),
                                      onTap: () {},
                                    ),
                                  ),
                                ),
                              ),
                            ],
                          );
                        },
                        itemCount: data.length,
                      ),
                    ],
                  ));
                } else if (snapshot.hasError) {
                  return Text("${snapshot.error}");
                }
              }

              return Center(child: CircularProgressIndicator());
            },
          )

0 个答案:

没有答案