声音功能
This commit is contained in:
@@ -28,6 +28,7 @@ class _BugListPageState extends State<BugListPage> {
|
||||
'resolveTime': '2026-04-15',
|
||||
'reportTime': '2026-03-25',
|
||||
'affectedUsers': '部分用户',
|
||||
'expanded': false, // 添加展开状态
|
||||
},
|
||||
{
|
||||
'id': 2,
|
||||
@@ -39,6 +40,7 @@ class _BugListPageState extends State<BugListPage> {
|
||||
'resolveTime': '2026-04-10',
|
||||
'reportTime': '2026-03-20',
|
||||
'affectedUsers': '大量用户',
|
||||
'expanded': false, // 添加展开状态
|
||||
},
|
||||
{
|
||||
'id': 3,
|
||||
@@ -50,6 +52,7 @@ class _BugListPageState extends State<BugListPage> {
|
||||
'resolveTime': '2026-03-28',
|
||||
'reportTime': '2026-03-15',
|
||||
'affectedUsers': '少数用户',
|
||||
'expanded': false, // 添加展开状态
|
||||
},
|
||||
{
|
||||
'id': 4,
|
||||
@@ -61,6 +64,7 @@ class _BugListPageState extends State<BugListPage> {
|
||||
'resolveTime': '2026-04-20',
|
||||
'reportTime': '2026-03-22',
|
||||
'affectedUsers': '部分用户',
|
||||
'expanded': false, // 添加展开状态
|
||||
},
|
||||
{
|
||||
'id': 5,
|
||||
@@ -72,12 +76,24 @@ class _BugListPageState extends State<BugListPage> {
|
||||
'resolveTime': '2026-03-26',
|
||||
'reportTime': '2026-03-18',
|
||||
'affectedUsers': '少数用户',
|
||||
'expanded': false, // 添加展开状态
|
||||
},
|
||||
];
|
||||
|
||||
final ScrollController _scrollController = ScrollController();
|
||||
bool _isRefreshing = false;
|
||||
|
||||
// 切换bug展开状态
|
||||
void _toggleBugExpanded(int bugId) {
|
||||
setState(() {
|
||||
final bugIndex = _bugs.indexWhere((bug) => bug['id'] == bugId);
|
||||
if (bugIndex != -1) {
|
||||
_bugs[bugIndex]['expanded'] = !_bugs[bugIndex]['expanded'];
|
||||
}
|
||||
});
|
||||
HapticFeedback.lightImpact();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_scrollController.dispose();
|
||||
@@ -231,6 +247,8 @@ class _BugListPageState extends State<BugListPage> {
|
||||
}
|
||||
|
||||
Widget _buildBugItem(Map<String, dynamic> bug) {
|
||||
final bool isExpanded = bug['expanded'] ?? false;
|
||||
|
||||
return Container(
|
||||
margin: const EdgeInsets.only(bottom: 16),
|
||||
decoration: BoxDecoration(
|
||||
@@ -352,87 +370,116 @@ class _BugListPageState extends State<BugListPage> {
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
// 分割线
|
||||
const Divider(height: 1),
|
||||
// 解决方案区域
|
||||
Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.grey[50],
|
||||
borderRadius: const BorderRadius.only(
|
||||
bottomLeft: Radius.circular(12),
|
||||
bottomRight: Radius.circular(12),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.lightbulb_outline,
|
||||
color: AppConstants.primaryColor,
|
||||
size: 16,
|
||||
const SizedBox(height: 12),
|
||||
// 解决方案按钮
|
||||
Container(
|
||||
width: double.infinity,
|
||||
child: ElevatedButton.icon(
|
||||
onPressed: () => _toggleBugExpanded(bug['id']),
|
||||
icon: Icon(
|
||||
isExpanded ? Icons.expand_less : Icons.expand_more,
|
||||
size: 18,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Text(
|
||||
'解决方案',
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: AppConstants.primaryColor,
|
||||
label: Text(
|
||||
isExpanded ? '收起解决方案' : '查看解决方案',
|
||||
style: const TextStyle(fontSize: 14),
|
||||
),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: AppConstants.primaryColor.withValues(alpha: 0.1),
|
||||
foregroundColor: AppConstants.primaryColor,
|
||||
elevation: 0,
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
side: BorderSide(
|
||||
color: AppConstants.primaryColor.withValues(alpha: 0.3),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
bug['solution'] ?? '暂无解决方案',
|
||||
style: const TextStyle(
|
||||
fontSize: 13,
|
||||
color: Colors.black54,
|
||||
height: 1.4,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
// 时间信息
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.schedule,
|
||||
size: 14,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
'预计解决: ${bug['resolveTime'] ?? '待定'}',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
Icon(
|
||||
Icons.report,
|
||||
size: 14,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
'报告时间: ${bug['reportTime'] ?? '未知'}',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
// 解决方案区域(可展开/收起)
|
||||
if (isExpanded) ...[
|
||||
const Divider(height: 1),
|
||||
Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.grey[50],
|
||||
borderRadius: const BorderRadius.only(
|
||||
bottomLeft: Radius.circular(12),
|
||||
bottomRight: Radius.circular(12),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.lightbulb_outline,
|
||||
color: AppConstants.primaryColor,
|
||||
size: 16,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Text(
|
||||
'解决方案',
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: AppConstants.primaryColor,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
bug['solution'] ?? '暂无解决方案',
|
||||
style: const TextStyle(
|
||||
fontSize: 13,
|
||||
color: Colors.black54,
|
||||
height: 1.4,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
// 时间信息
|
||||
Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.schedule,
|
||||
size: 14,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
'预计解决: ${bug['resolveTime'] ?? '待定'}',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
Icon(
|
||||
Icons.report,
|
||||
size: 14,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
'报告时间: ${bug['reportTime'] ?? '未知'}',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey[600],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user