34 lines
1003 B
Dart
34 lines
1003 B
Dart
// 全局昵称设置
|
|
// 持久化到 SharedPreferences / localStorage,所有工具共享同一个昵称
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
const _keyNickname = 'toolbox.nickname';
|
|
|
|
class NicknameService {
|
|
NicknameService._();
|
|
static final NicknameService instance = NicknameService._();
|
|
|
|
SharedPreferences? _prefs;
|
|
|
|
Future<void> _ensureInit() async {
|
|
_prefs ??= await SharedPreferences.getInstance();
|
|
}
|
|
|
|
/// 获取当前昵称,未设置时返回默认昵称
|
|
Future<String> get nickname async {
|
|
await _ensureInit();
|
|
final n = _prefs!.getString(_keyNickname);
|
|
if (n != null && n.trim().isNotEmpty) return n.trim();
|
|
return '用户';
|
|
}
|
|
|
|
/// 设置昵称(1-32 字符,过短返回 false)
|
|
Future<bool> setNickname(String value) async {
|
|
final trimmed = value.trim();
|
|
if (trimmed.isEmpty || trimmed.length > 32) return false;
|
|
await _ensureInit();
|
|
await _prefs!.setString(_keyNickname, trimmed);
|
|
return true;
|
|
}
|
|
}
|