release
This commit is contained in:
@@ -39,6 +39,7 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
late String _currentTip;
|
||||
bool _isOnline = true;
|
||||
bool _isEditingNickname = false;
|
||||
bool _isUserPlanJoined = false;
|
||||
late TextEditingController _nicknameController;
|
||||
|
||||
// 累计数据
|
||||
@@ -55,6 +56,7 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
text: widget.userData['nickname'] ?? '诗词爱好者',
|
||||
);
|
||||
_loadOnlineStatus();
|
||||
_loadUserPlanStatus();
|
||||
_loadTotalStats();
|
||||
}
|
||||
|
||||
@@ -78,6 +80,7 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
// 刷新数据(公共方法,供外部调用)
|
||||
Future<void> refreshData() async {
|
||||
await _loadTotalStats();
|
||||
await _loadUserPlanStatus();
|
||||
}
|
||||
|
||||
Future<void> _loadOnlineStatus() async {
|
||||
@@ -101,6 +104,13 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _loadUserPlanStatus() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
setState(() {
|
||||
_isUserPlanJoined = prefs.getBool('user_plan_joined') ?? false;
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _toggleOnlineStatus() async {
|
||||
// 如果当前是离线状态,要切换到在线状态,需要先检测网络
|
||||
if (!_isOnline) {
|
||||
@@ -502,11 +512,16 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_isEditingNickname = !_isEditingNickname;
|
||||
if (_isEditingNickname) {
|
||||
// 保存昵称
|
||||
widget.userData['nickname'] =
|
||||
_nicknameController.text;
|
||||
} else {
|
||||
// 进入编辑模式,初始化文本
|
||||
_nicknameController.text =
|
||||
widget.userData['nickname'] ?? '诗词爱好者';
|
||||
}
|
||||
_isEditingNickname = !_isEditingNickname;
|
||||
});
|
||||
},
|
||||
child: Icon(
|
||||
@@ -516,24 +531,25 @@ class PersonalCardState extends State<PersonalCard> {
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 8,
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white.withOpacity(0.2),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
child: Text(
|
||||
widget.userData['level'] ?? 'Lv.1',
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w500,
|
||||
if (_isUserPlanJoined)
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 8,
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.amber.withOpacity(0.8),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
child: const Text(
|
||||
'UEP',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
|
||||
Reference in New Issue
Block a user