userDataDirAndApply static method

Future<String?> userDataDirAndApply({
  1. required MyUserDataDirStore store,
  2. String? initialDir,
  3. Future<bool> confirmWarnings(
    1. List<String> warnings
    )?,
  4. Future<void> onAfterApply(
    1. String normalizedPath
    )?,
  5. String confirmButtonText = '选择文件夹',
})

系统选目录 → 可选 warnings 确认 → MyUserDataDirSession.apply

Implementation

static Future<String?> userDataDirAndApply({
  required MyUserDataDirStore store,
  String? initialDir,
  Future<bool> Function(List<String> warnings)? confirmWarnings,
  Future<void> Function(String normalizedPath)? onAfterApply,
  String confirmButtonText = '选择文件夹',
}) async {
  final picked = await dir(
    initialDir: initialDir,
    confirmButtonText: confirmButtonText,
  );
  if (picked == null || picked.isEmpty) return null;

  await MyUserDataDirValidator.ensureExistingWritable(picked);
  final normalized = MyUserDataDirValidator.normalizePath(picked);
  final warnings = MyUserDataDirValidator.warningsFor(normalized);
  if (warnings.isNotEmpty && confirmWarnings != null) {
    final proceed = await confirmWarnings(warnings);
    if (!proceed) return null;
  }

  return MyUserDataDirSession.apply(
    userDataDir: normalized,
    store: store,
    onAfterApply: onAfterApply,
  );
}