Future<String> appDir() async { if (_appDirCompl == null) { Completer<String> completer = Completer(); completer.complete(appDirInner()); _appDirCompl = completer; } return _appDirCompl!.future; }