Flutter,Futures,Context和Navigator.pop问题

时间:2020-08-25 15:36:41

标签: flutter asynchronous

预先感谢您调查此问题,我在弹出页面时遇到了问题!

我有此代码可在一个小部件中使用。它正在扫描QR码

     @override
     initState() {
      _scan();
      super.initState();
     }

     Future _scan() async {
      barcode = await scanner.scan();
      widget.test();
      Navigator.pop(context);
    }

我如何正确使用另一个库?在回调中调用widget.test()和Pop?

@override
void initState() {
super.initState();

_captureController.onCapture(
  (data) {
    print('onCapture----$data');

    setState(() {
      _captureText = data;
    });
  },
);

这是我遇到的错误的图片 enter image description here

1 个答案:

答案 0 :(得分:0)

因此解决方案是这样。我没有直接在setState()中调用函数,而是翻转了布尔。

bool _popBack = false;

@override
  initState() {
    _captureController.onCapture(
      (data) {
        print('onCapture----$data');
        setState(() {
          _captureText = data;

          if (!_popBack) {
            _popBack = true;
            _popTime();
          }
        });
      },
    );

这有效!

Future<dynamic> _popTime() async {
    widget.test();
    Navigator.of(context).pop();
  }

不要问我太多关于为什么或如何的问题。它起作用了!