Flutter:在同一页面中选择过滤器后刷新列表API

时间:2019-03-14 23:19:30

标签: flutter

我在Flutter中有一个用例,在这里我需要显示API的列表。在页面中选择了特定过滤器后,应通过触发新的API刷新显示的列表。下面是我的源代码,其中显示了API的列表。

class _MyFieldReportForm extends State<MyFieldReport> {
  var myContext;

  @override
  Widget build(BuildContext context) {
    myContext = context;
    // TODO: implement build
    return Scaffold(
      body: new FutureBuilder<List<ReportData>>(
        future: fetchProducts(new http.Client()),
        builder: (context, snapshot) {
          if (snapshot.hasError) print(snapshot.error);

          return snapshot.hasData
              ? createListView(snapshot, myContext)
              : new Center(child: new CircularProgressIndicator());
        },
      ),
      floatingActionButton: new FloatingActionButton(
        child: new Icon(Icons.add),
        backgroundColor: Colors.green,
        onPressed: () {
          Navigator.push(context,
              MaterialPageRoute(builder: (context) => FieldvisitForm()));
        },
      ),
    );
  }
}

按下任何过滤器按钮后,我需要使用新的API刷新此API。如果有人可以帮助我提供示例代码,那就太好了。

2 个答案:

答案 0 :(得分:2)

最后了解解决方案。可以通过在

中获取列表来完成
void initState() {
super.initState();
listFuture = fetchProducts(new http.Client());

}

在setState中,我正在更新列表。下面是完整的代码:

     Future<List<ReportData>> listFuture;
     body: new FutureBuilder<List<ReportData>>(
        future: listFuture,
        builder: (context, snapshot) {
          if (snapshot.hasError) print(snapshot.error);

          return snapshot.hasData
              ? createListView(snapshot, myContext)
              : new Center(child: new CircularProgressIndicator());
        },
      ),

onPressed: () {
          setState(() {
            refreshList();
          });

void refreshList() {
    listFuture = fetchProductsUpdate(new http.Client());
  }

答案 1 :(得分:0)

结帐my repo,我创建了一个App类,扩展了全状态,而小部件为无状态,这也许会对您有所帮助