134 lines
4.2 KiB
Dart
134 lines
4.2 KiB
Dart
import 'package:flutter/material.dart';
|
||
|
||
class AddExchangePage extends StatelessWidget {
|
||
// 功能列表数据
|
||
final List<Map<String, dynamic>> features = [
|
||
{'icon': Icons.bar_chart, 'title': '数据分析'},
|
||
{'icon': Icons.balance, 'title': '交易'},
|
||
{'icon': Icons.account_balance, 'title': '交易所'},
|
||
{'icon': Icons.branding_watermark, 'title': '品种'},
|
||
];
|
||
|
||
AddExchangePage({super.key});
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
final theme = Theme.of(context);
|
||
|
||
return Scaffold(
|
||
appBar: AppBar(
|
||
title: const Text('新增交易所'),
|
||
centerTitle: true,
|
||
elevation: 4,
|
||
shadowColor: Colors.black12,
|
||
backgroundColor: theme.colorScheme.surfaceContainerHighest,
|
||
// 1. 左上角返回按钮及功能实现
|
||
leading: IconButton(
|
||
icon: const Icon(Icons.arrow_back),
|
||
onPressed: () {
|
||
Navigator.of(context).pop(); // 返回上一页
|
||
},
|
||
),
|
||
// 2. 右上角添加按钮(展示功能)
|
||
actions: [
|
||
IconButton(
|
||
icon: const Icon(Icons.save),
|
||
onPressed: () {
|
||
// 暂为展示功能,可后续添加具体逻辑
|
||
},
|
||
),
|
||
],
|
||
),
|
||
// 使用SafeArea确保内容在安全区域内
|
||
body: SafeArea(
|
||
// 移除不必要的Expanded,避免约束冲突
|
||
child: Container(
|
||
color: theme.colorScheme.surface,
|
||
// 让容器占满整个可用空间
|
||
width: double.infinity,
|
||
height: double.infinity,
|
||
child: ListView.builder(
|
||
// 修改为ListView.builder
|
||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||
itemCount: features.length,
|
||
// 优化Web端滚动物理效果,同时支持触摸和鼠标滚动
|
||
physics: const ScrollPhysics(parent: BouncingScrollPhysics()),
|
||
itemBuilder: (context, index) {
|
||
// 构建列表项
|
||
Widget item = _buildFeatureItem(
|
||
context: context,
|
||
icon: features[index]['icon'],
|
||
title: features[index]['title'],
|
||
);
|
||
|
||
// 在每个列表项下方添加分割线,包括最后一个
|
||
return Column(
|
||
mainAxisSize: MainAxisSize.min,
|
||
children: [
|
||
item,
|
||
Divider(
|
||
height: 1,
|
||
thickness: 1,
|
||
indent: 72,
|
||
endIndent: 16,
|
||
color: theme.dividerColor,
|
||
),
|
||
],
|
||
);
|
||
},
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
|
||
Widget _buildFeatureItem({
|
||
required BuildContext context,
|
||
required IconData icon,
|
||
required String title,
|
||
}) {
|
||
final theme = Theme.of(context);
|
||
|
||
return Material(
|
||
color: Colors.transparent,
|
||
child: InkWell(
|
||
onTap: () {
|
||
// 点击事件可以在这里添加
|
||
},
|
||
borderRadius: BorderRadius.circular(8),
|
||
splashColor: theme.colorScheme.primary.withAlpha(26), // 0.1透明度的alpha值
|
||
highlightColor: theme.colorScheme.primary.withAlpha(
|
||
13,
|
||
), // 0.05透明度的alpha值
|
||
child: Container(
|
||
height: 64,
|
||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||
child: Row(
|
||
children: [
|
||
Container(
|
||
width: 40,
|
||
height: 40,
|
||
decoration: BoxDecoration(
|
||
color: theme.colorScheme.surfaceContainerHighest,
|
||
borderRadius: BorderRadius.circular(8),
|
||
),
|
||
child: Icon(icon, size: 24, color: theme.colorScheme.secondary),
|
||
),
|
||
const SizedBox(width: 16),
|
||
Text(
|
||
title,
|
||
style: theme.textTheme.titleMedium?.copyWith(
|
||
fontWeight: FontWeight.w500,
|
||
color: theme.colorScheme.onSurface,
|
||
),
|
||
),
|
||
const Spacer(),
|
||
Icon(Icons.arrow_forward_ios, size: 18, color: theme.hintColor),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|