Flutter 如何在相机前显示对话框(FlutterBarcodeScanner)

Flutter how to show a Dialog infront of a camera (FlutterBarcodeScanner)

我正在创建一个应用程序,允许用户连续扫描条形码,直到他们选择停止。对于用户扫描的每个条形码,我需要能够调用 API 来检查 API 是否有关于该条形码的信息。如果 API 没有关于条形码的信息,我想显示一个对话框以允许用户输入关于他们刚刚扫描的产品的信息。

我正在使用 FlutterBarcodeScanner 包连续扫描条形码,效果非常好。但是,在扫描条形码时触发的回调函数中,我想显示一个对话框,但它显示在我使用 FlutterBarcodeScanner 包打开相机之前所在的前一个屏幕上。相反,我希望对话框显示在相机顶部。

使用保存上下文的全局键显示对话框。鉴于对话框显示在前一个屏幕上,它几乎就像相机屏幕没有我可以访问的上下文,这将允许我在相机上下文中显示对话框,而不是前一个屏幕上下文。

请注意,我也尝试了 navigatorKey.currentContext,但不幸的是没有任何区别

class CustomFloatingActionButtonController {
 
  void search() {
    print("search");
  }

  Future<void> barcode() async {

    FlutterBarcodeScanner.getBarcodeStreamReceiver(
            '#00000000', 'Finish', true, ScanMode.BARCODE)!
        .listen(
      (barcode) {
        //Callback for when a barcode is scanned
        _showDialog(barcode);
      },
    );
  }

  void _showDialog(String barcode) {
    VoidCallback continueCallBack = () => { //Callback for Dialog not barcode scanner
          Navigator.of(navigatorKey.currentContext!).pop(),
          // code on continue comes here
        };
    ErrorDialogBox alert = ErrorDialogBox.rawTextError(barcode); //Custom alert box works fine 
    just shows in wrong context

    showDialog(
      context: navigatorKey.currentState!.overlay!.context,
      //Have also tried navigatorKey.currentContext it seems to make no difference
      builder: (_) {
        return alert;
      },
    );
  }
}

非常感谢任何帮助或建议。提前致谢。

可以改用https://pub.dev/packages/qr_code_scanner来解决。