首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Statefulwidget未刷新ListView

Statefulwidget未刷新ListView
EN

Stack Overflow用户
提问于 2020-10-13 17:13:09
回答 1查看 40关注 0票数 0

我正在将从API获取数据保存到flutter项目中的sqflite中,一切都运行正常,只是在单击了一个突出的按钮后,数据应该插入到表中,并打开一个新页面,但没有数据,除非我刷新页面,以便显示数据

如您所见,下面是凸起的按钮的代码:

代码语言:javascript
复制
 RaisedButton(
              child: Text('Get Cities'),
              onPressed: () async {
                setState(() {
                 GetAllData.data.Getdata();
               });
                await Navigator.push(context, MaterialPageRoute<void>(
                    builder: (BuildContext context) => StoreList()));
                setState(() {});
              },
            )

在setState内部,我调用了一个函数Getdata来从sqflite中获取数据,在获取数据之后,应用程序应该会打开一个新页面

下面是应该在ListView中显示数据的页面代码:

代码语言:javascript
复制
class StoreList extends StatefulWidget { @override


 _StoreListState createState() => _StoreListState();}
class _StoreListState extends State<StoreList> {
@override void initState() {
super.initState();
setState(() {
  DatabaseProvider_API.db.getRoutes();
});}



@override


Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    title: Text('Stores List'),
  ),
 body: FutureBuilder<List<Stores>>(
    future: DatabaseProvider_API.db.getStores(),
    builder: (context, snapshot){
      if(snapshot.data == null){
        return Center(
          child: CircularProgressIndicator(),

        );
      }
 else {
        return ListView.separated(
          separatorBuilder: (BuildContext context, int index){
            return Divider();
          },
itemCount: snapshot.data.length,
          itemBuilder: (BuildContext context, int index){
            String name = snapshot.data[index].sTORENAME;
            String name_ar = snapshot.data[index].cITY;
            return ListTile(
              title: Text(name),
              subtitle:Text (name_ar),
              onTap: ()async{
                setState(() {
                });

                await
                Navigator.push(context, MaterialPageRoute<void>(
                    builder: (BuildContext context) => Category() ));
              },
            );
          },
        );
      }
    },
  ),
  floatingActionButton: new FloatingActionButton(
    onPressed: () {
      setState(() {});
    },
    child: new Icon(Icons.update),
  ),
);

}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 17:46:56

尝试在调用GetAllData.data.GetData()之前添加await关键字

代码语言:javascript
复制
              RaisedButton(
              child: Text('Get Cities'),
              onPressed: () async {             
                  // await for new data to be inserted
                await GetAllData.data.Getdata();
                await Navigator.push(context, MaterialPageRoute<void>(
                    builder: (BuildContext context) => StoreList()));
                  setState(() {
                    dataFuture =  GetAllData.data.Getdata();
                  });
              },
            )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64332192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档