getUserStateDir function
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');
}