getUserStateDir function

String getUserStateDir({
  1. Map<String, String>? environment,
})

Derives the user-scoped state directory for FlutterStart session locks.

Prefers XDG_STATE_HOME, then LOCALAPPDATA (Windows), then HOME, falling back to system temp.

Binds: FR-056a.

Implementation

String getUserStateDir({Map<String, String>? environment}) {
  final env = environment ?? io.Platform.environment;

  final xdgStateHome = env['XDG_STATE_HOME'];
  if (xdgStateHome != null && xdgStateHome.isNotEmpty) {
    return p.join(xdgStateHome, 'flutterstart', 'locks');
  }

  final localAppData = env['LOCALAPPDATA'];
  if (localAppData != null && localAppData.isNotEmpty) {
    return p.join(localAppData, 'flutterstart', 'locks');
  }

  final home = env['HOME'] ?? env['USERPROFILE'];
  if (home != null && home.isNotEmpty) {
    return p.join(home, '.local', 'state', 'flutterstart', 'locks');
  }

  return p.join(io.Directory.systemTemp.path, 'flutterstart', 'locks');
}