Flutter 颤振打开键盘触发我的Navigator.push()回调

Flutter 颤振打开键盘触发我的Navigator.push()回调,flutter,Flutter,在我的应用程序中,我扫描第一页上的条形码,并在扫描有效条形码时调用第二页。在我的第二页,我必须编辑一些文本字段。我在调用navigator之前关闭相机,并在使用(context.push()的navigator.of方法的.then()关闭第二个页面时再次启动相机。 问题如下:当我点击一个文本字段时,键盘出现,上面提到的.then()被触发。我怎么做才能不在我从第二页回来时才给它打电话呢 if(result != null){ Navigator.push(scanned.context,

在我的应用程序中,我扫描第一页上的条形码,并在扫描有效条形码时调用第二页。在我的第二页,我必须编辑一些文本字段。我在调用navigator之前关闭相机,并在使用(context.push()的navigator.of方法的.then()关闭第二个页面时再次启动相机。 问题如下:当我点击一个文本字段时,键盘出现,上面提到的.then()被触发。我怎么做才能不在我从第二页回来时才给它打电话呢

if(result != null){
  Navigator.push(scanned.context, MaterialPageRoute(builder: (BuildContext context) {
    return InventoryItemSetQuantities(product: result, inventoryBloc: this, qrViewController: scanned.qrViewController);
  })).then((value) => scanned.qrViewController.resumeCamera());
}
[编辑] 好的,对不起,在填写完文本字段后,当页面弹出时,您需要打开条形码扫描仪。在这种情况下,最简单的方法是在处理完第二页(弹出后)后打开条形码扫描仪。这样做:

@override
  void dispose() {
    super.dispose();
    scanned.qrViewController.resumeCamera()
  } 
确保有条形码扫描仪的参考。您可能必须以构造函数的身份进入第二个页面,然后通过小部件对象访问对扫描仪的引用,如下所示:

@override
  void dispose() {
    super.dispose();
    widget.scanned.qrViewController.resumeCamera() //**scanned** is the passed barcode scanner from the first page 
  } 
在原始代码中,确保在然后()回调后卸下条形码扫描仪。这样做:

if(result != null){
  Navigator.push(scanned.context, MaterialPageRoute(builder: (BuildContext context) {
    return InventoryItemSetQuantities(product: result, inventoryBloc: this, qrViewController: scanned.qrViewController);
  }));
}
[编辑] 好的,对不起,在填写完文本字段后,当页面弹出时,您需要打开条形码扫描仪。在这种情况下,最简单的方法是在处理完第二页(弹出后)后打开条形码扫描仪。这样做:

@override
  void dispose() {
    super.dispose();
    scanned.qrViewController.resumeCamera()
  } 
确保有条形码扫描仪的参考。您可能必须以构造函数的身份进入第二个页面,然后通过小部件对象访问对扫描仪的引用,如下所示:

@override
  void dispose() {
    super.dispose();
    widget.scanned.qrViewController.resumeCamera() //**scanned** is the passed barcode scanner from the first page 
  } 
在原始代码中,确保在然后()回调后卸下条形码扫描仪。这样做:

if(result != null){
  Navigator.push(scanned.context, MaterialPageRoute(builder: (BuildContext context) {
    return InventoryItemSetQuantities(product: result, inventoryBloc: this, qrViewController: scanned.qrViewController);
  }));
}

它也不起作用。我刚试过,每次键盘显示感谢你的时间,它都会被触发。答案对我不起作用,但我只是找到了解决方法:我在脚手架上添加了resizeToAvoidBottomInset:false,以避免键盘重建页面。它也不起作用。我刚试过,每次键盘显示感谢你的时间,它都会被触发。答案对我来说不起作用,但我只是找到了解决方法:我在脚手架上添加了resizeToAvoidBottomInset:false,以避免键盘重建页面。