Flutter 出现以下警告:

Don't use 'BuildContext's across async gaps

awesome_dialog.AwesomeDialog(
  context: context,
  dialogType: awesome_dialog.DialogType.info,
  animType: awesome_dialog.AnimType.rightSlide,
  title: '版本更新',
  desc: 'APP有新的版本,是否现在升级?',
  btnOkText: '马上升级',
  btnCancelText: '稍后升级',
  btnCancelOnPress: () {
    AppBaseData.isStartUpdate = false;
    AppBaseData.isCheckUpdate = false;
    //更新不再提示
    LocalStorage.setIsNoPromptUpdate(true);
  },
  btnOkOnPress: () {
    tryOtaUpdate();
  },
).show();

原因是在异步方法中调用了弹出提示窗口(使用了BuildContexts)

处理方式:添加mounted判断

mounted 是 bool 类型,表示当前 State 是否加载到树⾥。

常用于判断页面是否释放。

比如在程序中有些异步的处理,当处理结束时直接调用setState方法会直接报错,因为页面已经释放(dispose)了,此时无法渲染页面,这时就可以使用mounted来进行判断页面是否被释放,如果释放了就不进行渲染。

if (mounted){
  awesome_dialog.AwesomeDialog(
    context: context,
    dialogType: awesome_dialog.DialogType.info,
    animType: awesome_dialog.AnimType.rightSlide,
    title: '版本更新',
    desc: 'APP有新的版本,是否现在升级?',
    btnOkText: '马上升级',
    btnCancelText: '稍后升级',
    btnCancelOnPress: () {
      AppBaseData.isStartUpdate = false;
      AppBaseData.isCheckUpdate = false;
      //更新不再提示
      LocalStorage.setIsNoPromptUpdate(true);
    },
    btnOkOnPress: () {
      tryOtaUpdate();
    },
  ).show();
}