Browse Source

refactor(ui): 重构消息气泡和进度按钮组件样式

- 统一消息气泡的内边距和圆角样式
- 将circular_progress_button移动到widgets目录
- 优化音乐播放列表视图的代码格式
- 移除平台特定的隐私设置条件判断
newdev_shunjiawei
lxm 1 year ago
parent
commit
eedd473922
  1. 24
      lib/modules/agent/views/message_bubble.dart
  2. 2
      lib/modules/agent/views/music_card.dart
  3. 0
      lib/modules/agent/widgets/circular_progress_button.dart
  4. 13
      lib/modules/music/views/music_playlist_view.dart
  5. 13
      lib/modules/settings/views/settings_view.dart

24
lib/modules/agent/views/message_bubble.dart

@ -46,28 +46,20 @@ class MessageBubble extends GetView<AgentController> {
isUser ? CrossAxisAlignment.end : CrossAxisAlignment.start, isUser ? CrossAxisAlignment.end : CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: hasImage padding: (hasImage && message == '[图片]')
? (message == '[图片]'
? EdgeInsets.zero ? EdgeInsets.zero
: isUser : const EdgeInsets.all(12),
? const EdgeInsets.fromLTRB(
12, 12, 16, 12) // 用户消息右侧多一点内边距
: const EdgeInsets.fromLTRB(
16, 12, 12, 12)) // AI消息左侧多一点内边距
: isUser
? const EdgeInsets.fromLTRB(
12, 12, 16, 12) // 用户消息右侧多一点内边距
: const EdgeInsets.fromLTRB(
16, 12, 12, 12), // AI消息左侧多一点内边距
decoration: BoxDecoration( decoration: BoxDecoration(
color: _getBubbleColor(context), color: _getBubbleColor(context),
borderRadius: BorderRadius.circular(18).copyWith( borderRadius: BorderRadius.only(
topLeft: isUser topLeft: isUser
? const Radius.circular(18) ? const Radius.circular(18)
: const Radius.circular(4), : const Radius.circular(4),
topRight: !isUser topRight: isUser
? const Radius.circular(18) ? const Radius.circular(4)
: const Radius.circular(4), : const Radius.circular(18),
bottomLeft: const Radius.circular(18),
bottomRight: const Radius.circular(18),
), ),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(

2
lib/modules/agent/views/music_card.dart

@ -3,7 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../../routes/app_routes.dart'; import '../../../routes/app_routes.dart';
import '../controllers/agent_controller.dart'; import '../controllers/agent_controller.dart';
import 'circular_progress_button.dart'; import '../widgets/circular_progress_button.dart';
/// 构建音乐项目 /// 构建音乐项目
Widget buildMusicItem(BuildContext context, int id, String name, String url, Widget buildMusicItem(BuildContext context, int id, String name, String url,

0
lib/modules/agent/views/circular_progress_button.dart → lib/modules/agent/widgets/circular_progress_button.dart

13
lib/modules/music/views/music_playlist_view.dart

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../../core/utils/logger.dart'; import '../../../core/utils/logger.dart';
import '../../agent/controllers/agent_controller.dart'; import '../../agent/controllers/agent_controller.dart';
import '../../agent/views/circular_progress_button.dart'; import '../../agent/widgets/circular_progress_button.dart';
class MusicPlaylistView extends StatelessWidget { class MusicPlaylistView extends StatelessWidget {
const MusicPlaylistView({Key? key}) : super(key: key); const MusicPlaylistView({Key? key}) : super(key: key);
@ -115,7 +115,9 @@ class MusicPlaylistView extends StatelessWidget {
); );
} }
final title = currentSong['name'] ?? currentSong['title'] ?? 'unknownSong'.tr; // 未知歌曲 final title = currentSong['name'] ??
currentSong['title'] ??
'unknownSong'.tr; // 未知歌曲
final artist = currentSong['singer'] ?? final artist = currentSong['singer'] ??
currentSong['sgener'] ?? currentSong['sgener'] ??
currentSong['artist'] ?? currentSong['artist'] ??
@ -192,7 +194,8 @@ class MusicPlaylistView extends StatelessWidget {
final id = item["id"] ?? 0; final id = item["id"] ?? 0;
final name = item["name"] ?? 'unknownSong'.tr; // 未知歌曲 final name = item["name"] ?? 'unknownSong'.tr; // 未知歌曲
final url = item["url"] ?? ""; final url = item["url"] ?? "";
final singer = item["singer"] ?? item["sgener"] ?? 'unknownArtist'.tr; // 未知歌手 final singer =
item["singer"] ?? item["sgener"] ?? 'unknownArtist'.tr; // 未知歌手
final image = item["image"] ?? ""; final image = item["image"] ?? "";
return _buildMusicItem( return _buildMusicItem(
@ -628,8 +631,8 @@ class MusicPlaylistView extends StatelessWidget {
} }
// 播放选中的歌曲 // 播放选中的歌曲
Future<void> _playSelectedSong(AgentController controller, Map<String, dynamic> song, Future<void> _playSelectedSong(AgentController controller,
List<Map<String, dynamic>> playlist) async { Map<String, dynamic> song, List<Map<String, dynamic>> playlist) async {
// 防止重复点击导致的状态混乱 // 防止重复点击导致的状态混乱
if (controller.isLoadingMusic.value) { if (controller.isLoadingMusic.value) {
return; return;

13
lib/modules/settings/views/settings_view.dart

@ -418,7 +418,7 @@ class SettingsView extends GetView<SettingsController> {
}, },
isDarkMode: isDarkMode, isDarkMode: isDarkMode,
), ),
if (Platform.isAndroid) ...[ // if (Platform.isAndroid) ...[
Divider( Divider(
height: 1, height: 1,
color: isDarkMode color: isDarkMode
@ -433,17 +433,16 @@ class SettingsView extends GetView<SettingsController> {
iconBgColor: isDarkMode iconBgColor: isDarkMode
? Colors.purple[900]!.withOpacity(0.3) ? Colors.purple[900]!.withOpacity(0.3)
: Colors.purple[100]!, : Colors.purple[100]!,
iconColor: isDarkMode iconColor:
? Colors.purple[300]! isDarkMode ? Colors.purple[300]! : Colors.purple[600]!,
: Colors.purple[600]!,
titleColor: isDarkMode ? Colors.white : null, titleColor: isDarkMode ? Colors.white : null,
subtitleColor: isDarkMode ? Colors.white70 : null, subtitleColor: isDarkMode ? Colors.white70 : null,
onTap: () { onTap: () {
AppSettings.openAppSettings(); AppSettings.openAppSettings();
}, },
isDarkMode: isDarkMode, isDarkMode: isDarkMode,
) ),
], // ],
Divider( Divider(
height: 1, height: 1,
@ -599,7 +598,7 @@ class SettingsView extends GetView<SettingsController> {
? Colors.white.withOpacity(0.1) ? Colors.white.withOpacity(0.1)
: Colors.grey[200]), : Colors.grey[200]),
// 添加权限管理设置项 // 权限管理设置项
_buildSimpleNavigationSetting( _buildSimpleNavigationSetting(
title: 'permissionManagement'.tr, // 权限管理 title: 'permissionManagement'.tr, // 权限管理
subtitle: 'permissionManagementInfo'.tr, // 管理应用权限设置 subtitle: 'permissionManagementInfo'.tr, // 管理应用权限设置

Loading…
Cancel
Save