Flutter:等待异步void方法

时间:2020-01-22 17:00:15

标签: android asynchronous flutter

我有一个写入文件系统的异步保存方法。返回类型为void。我想在保存完成后立即更新ui。通常,我会使用then()方法执行此操作,但不适用于void返回类型?那么保存完成后如何通知我?

  void save(Folder folder) async {  
   .....
  }

2 个答案:

答案 0 :(得分:4)

将返回类型更改为Future<void>

Future<void> save(Folder folder) async {  
   .....
}

然后您可以执行await save(...);save().then(...);

答案 1 :(得分:0)

您可以使用extension UIView { func bindToKeyboard() { NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil) } @objc func keyboardWillChange(_ notification: NSNotification) { let duration = notification.userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! Double let curve = notification.userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! UInt let beginningFrame = (notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue let endFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue var deltaY = endFrame.origin.y - beginningFrame.origin.y UIView.animateKeyframes(withDuration: duration, delay: 0.0, options: UIView.KeyframeAnimationOptions(rawValue: curve), animations: { self.frame.origin.y += deltaY }, completion: nil) } } 代替void。

Future<Null>