Android navigator.pop()之后无法更新状态

Android navigator.pop()之后无法更新状态,android,flutter,native,mobile-development,Android,Flutter,Native,Mobile Development,我还在学习颤振,我遇到了一个问题。我有两个屏幕,一个是ProductList,另一个是ProductAdd。问题是当用户单击“添加”按钮时,程序会导航到ProductAdd。用户输入一些信息并单击“确定”。ProductAdd执行一些sqflite任务并调用navigate.pop(),但在用户返回主页后状态不会改变,在我重新加载页面时状态会改变。 这是productlist。(productCount是我在调用navigate.pop时要更新的产品) } 这是ProductAdd(其中执行了n

我还在学习颤振,我遇到了一个问题。我有两个屏幕,一个是ProductList,另一个是ProductAdd。问题是当用户单击“添加”按钮时,程序会导航到ProductAdd。用户输入一些信息并单击“确定”。ProductAdd执行一些sqflite任务并调用navigate.pop(),但在用户返回主页后状态不会改变,在我重新加载页面时状态会改变。 这是productlist。(productCount是我在调用navigate.pop时要更新的产品)

}

这是ProductAdd(其中执行了navigator.pop())


}

我认为您应该使用navigator.pushreplacement。因为navigator.pop将只弹出当前屏幕,该屏幕将位于前一屏幕的顶部。因此,下面的屏幕不会构建并提供相同的功能screen@JalakamKiran除了更换按钮外,我还需要更改其他内容吗?1.永远不要查看设置状态()。读一读。2.当您在调用
getProducts()
时,在产品页面上没有等待(建议)的地方删除async?
 ListView buildProductList() {
return ListView.builder(
    itemCount: productCount,
    itemBuilder: (BuildContext context,int position){
      return Card(
        color: Colors.cyan,
        elevation: 2.0,
        child: ListTile(
          leading: CircleAvatar(backgroundColor: Colors.black12,child: Text("p"),),
          title: Text(this.products[position].name),
          subtitle: Text(this.products[position].description),
          onTap: (){},
        ),
      );
    });
 }

void gotoProductAdd() async {
  var result = await Navigator.push(context,MaterialPageRoute(builder: (context)=>ProductAdd()));
  getProducts();
}

void getProducts() async{
  var productsFuture =  dbHelper.getProducts();
  //data is the data coming from sqflite db
  productsFuture.then((data){
    this.products = data;
    productCount = data.length;
  });
}
 void addProduct() async{
var result = await 
dbHelper.insert(Product(name:txtName.text,
description:txtDescription.text,
unitPrice:double.tryParse(txtUnitPrice.text)));
Navigator.pop(context,true);