1.优化补足了首页下拉刷新中对获取场站接口的加入,确保能够实时获取数据并渲染。

2.优化修改了tcp重连机制,具体操作:断开重连时候不再建立新链接 而是将旧链接重置,并重新发送数据。
3.大面积的给项目中的各个页面 手动接入了多语言的支持。同时也调整了相应带来的问题英文长度较大影响原有的样式的问题,已解决了对应的样式不和谐问题。保证了外观的统一性。
4.给项目中的主要操作加了几个核心的操作比如远程遥控和路径规划添加了双层的保护,设置里安全模式,即在此期间对服务器推送的重复登录操作后的自动退出登录做一个拦截 保证操作的安全性。
This commit is contained in:
2026-07-02 16:04:30 +08:00
parent d5a83c1221
commit 0db64a96e7
69 changed files with 5018 additions and 1532 deletions

View File

@@ -8,6 +8,7 @@ import 'package:maibu_satabot_v2/core/router/route_paths.dart';
import 'package:maibu_satabot_v2/core/storage/user_storage.dart';
import 'package:maibu_satabot_v2/features/auth/presentation/bloc/auth_cubit.dart';
import 'package:maibu_satabot_v2/features/main_container/presentation/cubit/tab_config_cubit.dart';
import 'package:maibu_satabot_v2/features/v2/device_list/presentation/float_bar/cubit/float_bar_setting_cubit.dart';
/// 系统设置综合页面
class SystemSettingsPage extends StatefulWidget {
@@ -45,6 +46,9 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
// Tab 设置
_buildTabSettingsSection(),
const SizedBox(height: 12),
// 悬浮条设置
_buildFloatBarSection(),
const SizedBox(height: 12),
// 语言设置
_buildLanguageSection(),
const SizedBox(height: 12),
@@ -56,6 +60,65 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
);
}
/// 悬浮条设置
Widget _buildFloatBarSection() {
return Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
boxShadow: const [
BoxShadow(
color: Color(0x0D000000),
blurRadius: 8,
offset: Offset(0, 2),
),
],
),
child: Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
AppLocalizations.of(context).translate('my_v2.suspend_bar'),
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Color(0xFF1D2129),
),
),
const SizedBox(height: 4),
Text(
AppLocalizations.of(
context,
).translate('my_v2.suspend_bar_desc'),
style: const TextStyle(
fontSize: 13,
color: Color(0xFF86909C),
),
),
],
),
),
ValueListenableBuilder<bool>(
valueListenable: FloatBarSettingService.settingNotifier,
builder: (context, isEnabled, child) {
return Switch(
value: isEnabled,
onChanged: (value) {
FloatBarSettingService.setEnabled(value);
},
activeColor: const Color(0xFF165DFF),
);
},
),
],
),
);
}
/// Tab 设置
Widget _buildTabSettingsSection() {
return Container(
@@ -74,9 +137,9 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Tab 设置',
style: TextStyle(
Text(
AppLocalizations.of(context).translate('my_v2.tab_settings'),
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Color(0xFF1D2129),
@@ -88,9 +151,9 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
if (state.runtimeType.toString() != 'TabConfigLoaded') {
return const Center(child: CircularProgressIndicator());
}
final tabs = state.config.items;
return ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
@@ -164,14 +227,18 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
AppLocalizations.of(context).translate('my.chinese'),
'zh',
locale.languageCode == 'zh',
() => context.read<LocaleCubit>().setLocale(const Locale('zh', 'CN')),
() => context.read<LocaleCubit>().setLocale(
const Locale('zh', 'CN'),
),
),
const SizedBox(height: 12),
_buildLanguageOption(
AppLocalizations.of(context).translate('my.english'),
'en',
locale.languageCode == 'en',
() => context.read<LocaleCubit>().setLocale(const Locale('en', 'US')),
() => context.read<LocaleCubit>().setLocale(
const Locale('en', 'US'),
),
),
],
);
@@ -182,16 +249,25 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
);
}
Widget _buildLanguageOption(String label, String code, bool isSelected, VoidCallback onTap) {
Widget _buildLanguageOption(
String label,
String code,
bool isSelected,
VoidCallback onTap,
) {
return GestureDetector(
onTap: onTap,
child: Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: isSelected ? const Color(0xFF165DFF).withOpacity(0.1) : Colors.transparent,
color: isSelected
? const Color(0xFF165DFF).withOpacity(0.1)
: Colors.transparent,
borderRadius: BorderRadius.circular(8),
border: Border.all(
color: isSelected ? const Color(0xFF165DFF) : const Color(0xFFE5E6EB),
color: isSelected
? const Color(0xFF165DFF)
: const Color(0xFFE5E6EB),
width: 1,
),
),
@@ -202,7 +278,9 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
label,
style: TextStyle(
fontSize: 14,
color: isSelected ? const Color(0xFF165DFF) : const Color(0xFF1D2129),
color: isSelected
? const Color(0xFF165DFF)
: const Color(0xFF1D2129),
fontWeight: isSelected ? FontWeight.w600 : FontWeight.normal,
),
),
@@ -258,11 +336,13 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
context: context,
builder: (context) => AlertDialog(
title: Text(AppLocalizations.of(context).translate('login.logout')),
content: const Text('确定要退出登录吗?'),
content: Text(
AppLocalizations.of(context).translate('login.confirm_logout'),
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('取消'),
child: Text(AppLocalizations.of(context).translate('my_v2.cancel')),
),
TextButton(
onPressed: () async {
@@ -275,7 +355,9 @@ class _SystemSettingsPageState extends State<SystemSettingsPage> {
style: TextButton.styleFrom(
foregroundColor: const Color(0xFFF53F3F),
),
child: const Text('确定'),
child: Text(
AppLocalizations.of(context).translate('my_v2.confirm'),
),
),
],
),