From c8263858b8a37cd35d7fdc26aa09420634263f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=8C=AF=E5=8D=87?= <359059686@qq.com> Date: Tue, 14 Oct 2025 14:10:56 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E4=BC=81=E4=B8=9A=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/images/profile.png | Bin 0 -> 42365 bytes .../enterprise_list_controller.dart | 10 +- .../enterprise_form_page.dart | 86 ++-- .../pages/enterprise_info_page.dart | 88 ++++ .../enterprise_list_page.dart | 15 +- lib/app/routes/app_pages.dart | 9 +- lib/app/routes/app_routes.dart | 4 +- .../home/controllers/home_controller.dart | 2 +- lib/modules/my/views/my_page.dart | 28 +- lib/modules/test.dart | 468 ------------------ 10 files changed, 179 insertions(+), 531 deletions(-) create mode 100644 assets/images/profile.png rename lib/app/features/enterprise/presentation/{views => pages}/enterprise_form_page.dart (84%) create mode 100644 lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart rename lib/app/features/enterprise/presentation/{views => pages}/enterprise_list_page.dart (88%) delete mode 100644 lib/modules/test.dart diff --git a/assets/images/profile.png b/assets/images/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..05498b3b3d85ecd0704348fec970c238181bf80b GIT binary patch literal 42365 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 navigateToUploadPage() async { - final result = await Get.toNamed(AppRoutes.test); + // final result = await Get.toNamed(AppRoutes.test); + // if (result == true) { + // refreshList(); // 调用控制器的方法刷新 + // } + } + + /// 导航到企业问题列表 + Future navigateToEnterpriseInfoPage() async { + final result = await Get.toNamed(AppRoutes.enterpriseInfo); if (result == true) { refreshList(); // 调用控制器的方法刷新 } diff --git a/lib/app/features/enterprise/presentation/views/enterprise_form_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_form_page.dart similarity index 84% rename from lib/app/features/enterprise/presentation/views/enterprise_form_page.dart rename to lib/app/features/enterprise/presentation/pages/enterprise_form_page.dart index 7805d92..cab79d6 100644 --- a/lib/app/features/enterprise/presentation/views/enterprise_form_page.dart +++ b/lib/app/features/enterprise/presentation/pages/enterprise_form_page.dart @@ -21,8 +21,9 @@ class EnterpriseFormPage extends GetView { padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h), child: Column( children: [ + buildTitleSection(title: '必填信息'), + SizedBox(height: 12.h), _buildInfoSection( - title: '必填信息', children: [ _buildTextField( label: '企业名称', @@ -38,8 +39,9 @@ class EnterpriseFormPage extends GetView { ], ), SizedBox(height: 12.h), + buildTitleSection(title: '选填信息'), + SizedBox(height: 12.h), _buildInfoSection( - title: '选填信息', children: [ _buildTextField( label: '企业地址', @@ -78,36 +80,57 @@ class EnterpriseFormPage extends GetView { // 将 controller 传进来以获取动态标题 PreferredSizeWidget _buildAppBar() { - return PreferredSize( - preferredSize: Size.fromHeight(56.h), - child: Container( - decoration: const BoxDecoration( - // ... 渐变色 + return AppBar( + // ... 其他 AppBar 属性 + // 使用 Obx 来监听 pageTitle 的变化 + title: Obx( + () => Text( + controller.pageTitle.value, + style: TextStyle( + fontSize: 18.sp, + color: Colors.white, + fontWeight: FontWeight.bold, + ), ), - child: AppBar( - // ... 其他 AppBar 属性 - // 使用 Obx 来监听 pageTitle 的变化 - title: Obx( - () => Text( - controller.pageTitle.value, - style: TextStyle( - fontSize: 18.sp, - color: Colors.white, - fontWeight: FontWeight.bold, - ), - ), + ), + leading: IconButton( + icon: Icon( + Icons.arrow_back_ios_new_rounded, + size: 24.sp, + color: Colors.white, + ), + onPressed: () => Get.back(), + ), + backgroundColor: Colors.transparent, + flexibleSpace: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: [Color(0xFF418CFC), Color(0xFF3DBFFC)], + begin: Alignment.centerLeft, + end: Alignment.centerRight, ), - centerTitle: true, ), ), + elevation: 0, + centerTitle: true, + ); + } + + Widget buildTitleSection({required String title}) { + return Row( + children: [ + Container(width: 4.w, height: 16.h, color: Colors.blue), + SizedBox(width: 8.w), + Text( + title, + style: TextStyle(fontSize: 16.sp, fontWeight: FontWeight.bold), + ), + ], ); } // 构建信息区块 (例如 "必填信息") - Widget _buildInfoSection({ - required String title, - required List children, - }) { + Widget _buildInfoSection({required List children}) { return Container( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h), decoration: BoxDecoration( @@ -116,20 +139,7 @@ class EnterpriseFormPage extends GetView { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Container(width: 4.w, height: 16.h, color: Colors.blue), - SizedBox(width: 8.w), - Text( - title, - style: TextStyle(fontSize: 16.sp, fontWeight: FontWeight.bold), - ), - ], - ), - SizedBox(height: 10.h), - ...children, - ], + children: [...children], ), ); } diff --git a/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart new file mode 100644 index 0000000..1cabaf6 --- /dev/null +++ b/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +// 支付宝消息页面 +class EnterpriseInfoPage extends StatelessWidget { + const EnterpriseInfoPage({super.key}); + + @override + Widget build(BuildContext context) { + // 1. 使用 DefaultTabController 包裹 Scaffold + // length: 2 表示我们有两个 Tab + return DefaultTabController( + length: 2, + child: Scaffold( + backgroundColor: const Color(0xFFF5F5F5), // 设置一个类似截图的浅灰色背景 + // 使用我们自定义的 AppBar + appBar: _buildAlipayAppBar(context), + // TabBarView 用于显示与 Tab 对应的内容 + body: const TabBarView( + children: [ + Center(child: Text('问题列表')), + Center(child: Text('企业基本信息')), + ], + ), + ), + ); + } + + /// 构建 AppBar 的私有方法 + PreferredSizeWidget _buildAlipayAppBar(BuildContext context) { + return AppBar( + // --- 样式和颜色 --- + backgroundColor: Colors.transparent, // AppBar 背景色为白色 + flexibleSpace: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: [Color(0xFF418CFC), Color(0xFF3DBFFC)], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + ), + elevation: 0, // 移除 AppBar 的阴影 + systemOverlayStyle: SystemUiOverlayStyle.dark, // 设置状态栏图标为深色 + // --- 左侧返回按钮 --- + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: Colors.white, size: 20), + onPressed: () { + Get.back(); + }, + ), + // --- 中间的 TabBar --- + // 将 TabBar 放入 title 属性中,可以使其居中显示 + title: TabBar( + isScrollable: false, // true: Tab的宽度由内容决定; false: 均分宽度 + labelColor: Colors.white, // 选中 Tab 的文字颜色 + unselectedLabelColor: Colors.grey, // 未选中 Tab 的文字颜色 + // labelStyle: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold), + // unselectedLabelStyle: const TextStyle(fontSize: 17), + overlayColor: WidgetStateProperty.all(Colors.transparent), + indicatorColor: Colors.white, // 指示器颜色 + // indicatorWeight: 2.5, // 指示器高度 + indicatorPadding: EdgeInsetsGeometry.only(bottom: 4.h), // 指示器内边距), + indicatorSize: TabBarIndicatorSize.label, // 指示器宽度与文字同宽 + dividerHeight: 0, // 去掉 TabBar 底部的分割线 + tabs: const [ + Tab(text: '问题列表'), + Tab(text: '企业基本情况'), + ], + ), + centerTitle: false, + titleSpacing: 0, + // --- 右侧操作按钮 --- + actions: [ + IconButton( + icon: Icon(Icons.add, color: Colors.white), // 使用 .sp + onPressed: () {}, + ), + IconButton( + icon: Icon(Icons.upload, color: Colors.pink[300]), // 使用 .sp + onPressed: () {}, + ), + ], + ); + } +} diff --git a/lib/app/features/enterprise/presentation/views/enterprise_list_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart similarity index 88% rename from lib/app/features/enterprise/presentation/views/enterprise_list_page.dart rename to lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart index 6cd819f..7406bf8 100644 --- a/lib/app/features/enterprise/presentation/views/enterprise_list_page.dart +++ b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart @@ -20,7 +20,16 @@ class EnterpriseListPage extends GetView { color: Colors.white, ), ), - backgroundColor: const Color(0xFF3B82F6), + backgroundColor: Colors.transparent, + flexibleSpace: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: [Color(0xFF418CFC), Color(0xFF3DBFFC)], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + ), elevation: 0, centerTitle: true, actions: [ @@ -65,7 +74,9 @@ class EnterpriseListPage extends GetView { onEdit: () { controller.navigateToEditForm(enterprise); }, - onViewProblems: () {}, + onViewProblems: () { + controller.navigateToEnterpriseInfoPage(); + }, ), ); }, diff --git a/lib/app/routes/app_pages.dart b/lib/app/routes/app_pages.dart index 32a235a..9232850 100644 --- a/lib/app/routes/app_pages.dart +++ b/lib/app/routes/app_pages.dart @@ -1,6 +1,6 @@ import 'package:get/get.dart'; import 'package:problem_check_system/app/features/enterprise/presentation/bindings/enterprise_form_binding.dart'; -import 'package:problem_check_system/app/features/enterprise/presentation/views/enterprise_form_page.dart'; +import 'package:problem_check_system/app/features/enterprise/presentation/pages/enterprise_form_page.dart'; import 'package:problem_check_system/modules/home/bindings/home_binding.dart'; import 'package:problem_check_system/modules/home/views/home_page.dart'; import 'package:problem_check_system/modules/auth/bindings/login_binding.dart'; @@ -10,7 +10,7 @@ import 'package:problem_check_system/modules/my/views/change_password.dart'; import 'package:problem_check_system/modules/problem/bindings/problem_form_binding.dart'; import 'package:problem_check_system/modules/problem/views/problem_form_page.dart'; import 'package:problem_check_system/modules/problem/views/problem_upload_page.dart'; -import 'package:problem_check_system/modules/test.dart'; +import 'package:problem_check_system/app/features/enterprise/presentation/pages/enterprise_info_page.dart'; import 'app_routes.dart'; @@ -42,7 +42,10 @@ abstract class AppPages { page: () => const ProblemFormPage(), binding: ProblemFormBinding(), ), - GetPage(name: AppRoutes.test, page: () => const HealthApp()), + GetPage( + name: AppRoutes.enterpriseInfo, + page: () => const EnterpriseInfoPage(), + ), GetPage( name: AppRoutes.enterpriseForm, page: () => const EnterpriseFormPage(), diff --git a/lib/app/routes/app_routes.dart b/lib/app/routes/app_routes.dart index f59aa77..a023f20 100644 --- a/lib/app/routes/app_routes.dart +++ b/lib/app/routes/app_routes.dart @@ -13,10 +13,8 @@ abstract class AppRoutes { // #endregion // #region - static const enterprise = '/enterprise'; + static const enterpriseInfo = '/enterpriseInfo'; static const enterpriseList = '/enterpriseList'; static const enterpriseForm = '/enterpriseForm'; // #endregion - - static const test = '/test'; } diff --git a/lib/modules/home/controllers/home_controller.dart b/lib/modules/home/controllers/home_controller.dart index 6acb4dd..6608501 100644 --- a/lib/modules/home/controllers/home_controller.dart +++ b/lib/modules/home/controllers/home_controller.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:problem_check_system/app/features/enterprise/presentation/views/enterprise_list_page.dart'; +import 'package:problem_check_system/app/features/enterprise/presentation/pages/enterprise_list_page.dart'; import 'package:problem_check_system/modules/my/views/my_page.dart'; import 'package:problem_check_system/modules/problem/views/problem_page.dart'; diff --git a/lib/modules/my/views/my_page.dart b/lib/modules/my/views/my_page.dart index 0b6b9ad..575703b 100644 --- a/lib/modules/my/views/my_page.dart +++ b/lib/modules/my/views/my_page.dart @@ -40,18 +40,13 @@ class MyPage extends GetView { /// 顶部背景和用户信息部分 Widget _buildBackground() { - return Positioned( - top: 0, - left: 0, - right: 0, - child: Container( - height: 250.h, - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [const Color(0xFF418CFC), const Color(0x713DBFFC)], - ), + return Container( + decoration: const BoxDecoration( + image: DecorationImage( + // 替换成你的图片路径 + image: AssetImage('assets/images/profile.png'), + // 4. 使用 BoxFit.cover 填充模式 + fit: BoxFit.cover, ), ), ); @@ -83,10 +78,10 @@ class MyPage extends GetView { padding: EdgeInsets.symmetric(horizontal: 20.w), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(15.r), + borderRadius: BorderRadius.circular(10.r), boxShadow: [ BoxShadow( - color: Colors.grey.withValues(alpha: 25.5), + color: Colors.grey.withValues(alpha: .5), spreadRadius: 2, blurRadius: 5, offset: const Offset(0, 3), @@ -158,7 +153,10 @@ class MyPage extends GetView { ), Text( controller.userPhone.value, - style: TextStyle(fontSize: 14.sp, color: Colors.grey), + style: TextStyle( + fontSize: 14.sp, + color: const Color(0xFF408EFC), + ), ), ], ), diff --git a/lib/modules/test.dart b/lib/modules/test.dart deleted file mode 100644 index d2f5f88..0000000 --- a/lib/modules/test.dart +++ /dev/null @@ -1,468 +0,0 @@ -import 'package:flutter/material.dart'; - -class HealthApp extends StatelessWidget { - const HealthApp({super.key}); - - @override - Widget build(BuildContext context) { - return HomePage1(); - } -} - -class HomePage1 extends StatefulWidget { - const HomePage1({super.key}); - - @override - State createState() => _HomePageState(); -} - -class _HomePageState extends State - with SingleTickerProviderStateMixin { - late TabController _tabController; - int _bottomNavIndex = 0; - - @override - void initState() { - super.initState(); - _tabController = TabController(length: 3, vsync: this); - } - - @override - void dispose() { - _tabController.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: _buildAppBar(), - body: SingleChildScrollView( - child: Column( - children: [ - // _buildSearchBar(), - // _buildServicesGrid(), - const SizedBox(height: 12), - // _buildHealthManagementCard(), - const SizedBox(height: 12), - // _buildDoctorBanner(), - const SizedBox(height: 12), - // _buildPopularServices(), - ], - ), - ), - // bottomNavigationBar: _buildBottomNavigationBar(), - ); - } - - // 构建顶部 AppBar - PreferredSizeWidget _buildAppBar() { - return AppBar( - backgroundColor: Colors.blue, - elevation: 0, - leading: SizedBox(), - title: const Center( - child: Text( - '企业列表', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontFamily: 'MyFont', - ), - ), - ), - actions: [ - // IconButton( - // onPressed: () {}, - // icon: const Icon(Icons.widgets_outlined, color: Colors.black), - // ), - IconButton( - onPressed: () {}, - icon: const Icon(Icons.add, color: Colors.white), - ), - ], - bottom: TabBar( - controller: _tabController, - isScrollable: true, - labelColor: Colors.black, - unselectedLabelColor: Colors.grey[700], - indicatorColor: Colors.blue, - indicatorWeight: 3, - tabs: const [ - Tab(text: '问题列表'), - Tab(text: '历史问题列表'), - Tab(text: '企业基本情况'), - ], - ), - ); - } - - // 构建顶部 AppBar - PreferredSizeWidget _buildAppBar2() { - return AppBar( - backgroundColor: Colors.lightBlue[50], - elevation: 0, - leading: const Icon(Icons.arrow_back_ios, color: Colors.black), - title: const Center( - child: Text( - '企业列表', - style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold), - ), - ), - actions: [ - // IconButton( - // onPressed: () {}, - // icon: const Icon(Icons.widgets_outlined, color: Colors.black), - // ), - IconButton( - onPressed: () {}, - icon: const Icon(Icons.add, color: Colors.black), - ), - ], - bottom: TabBar( - controller: _tabController, - isScrollable: true, - labelColor: Colors.black, - unselectedLabelColor: Colors.grey[700], - indicatorColor: Colors.blue, - indicatorWeight: 3, - tabs: const [ - Tab(text: '问题列表'), - Tab(text: '历史问题列表'), - Tab(text: '企业基本情况'), - ], - ), - ); - } - - // 构建搜索框 - Widget _buildSearchBar() { - return Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - color: Colors.lightBlue[50], - child: Row( - children: [ - const Text('淄博', style: TextStyle(fontSize: 16)), - const Icon(Icons.arrow_drop_down), - const SizedBox(width: 8), - Expanded( - child: Container( - height: 40, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(20), - ), - child: const TextField( - decoration: InputDecoration( - hintText: '家庭共济', - prefixIcon: Icon(Icons.search, color: Colors.grey), - border: InputBorder.none, - contentPadding: EdgeInsets.symmetric(vertical: 10), - ), - ), - ), - ), - TextButton( - onPressed: () {}, - child: const Text( - '搜索', - style: TextStyle(color: Colors.black, fontSize: 16), - ), - ), - ], - ), - ); - } - - // 构建功能网格 - Widget _buildServicesGrid() { - // 辅助函数创建单个网格项 - Widget buildGridItem( - IconData icon, - String label, { - bool isSpecial = false, - }) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Stack( - alignment: Alignment.topRight, - children: [ - Icon(icon, size: 40, color: Colors.blue), - if (isSpecial) - Container( - padding: const EdgeInsets.symmetric( - horizontal: 4, - vertical: 1, - ), - decoration: BoxDecoration( - color: Colors.red, - borderRadius: BorderRadius.circular(8), - ), - child: const Text( - '正品药', - style: TextStyle(color: Colors.white, fontSize: 8), - ), - ), - ], - ), - const SizedBox(height: 8), - Text(label, style: const TextStyle(fontSize: 12)), - ], - ); - } - - return Container( - color: Colors.lightBlue[50], - padding: const EdgeInsets.fromLTRB(16, 16, 16, 24), - child: GridView.count( - crossAxisCount: 5, - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - children: [ - buildGridItem(Icons.qr_code_scanner, '医保码'), - buildGridItem(Icons.add_box, '挂号'), - buildGridItem(Icons.person, '问诊'), - buildGridItem(Icons.medical_services, '买药', isSpecial: true), - buildGridItem(Icons.shield, '健康保障'), - buildGridItem(Icons.local_hospital, '好药源选'), - buildGridItem(Icons.health_and_safety, '体检'), - buildGridItem(Icons.mood, '口腔'), - buildGridItem(Icons.grass, '中医'), - buildGridItem(Icons.apps, '全部服务'), - ], - ), - ); - } - - // 构建健康管理卡片 - Widget _buildHealthManagementCard() { - return Container( - margin: const EdgeInsets.symmetric(horizontal: 16), - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - '我的健康管理', - style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16), - ), - const SizedBox(height: 12), - Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: Colors.blue.withOpacity(0.1), - borderRadius: BorderRadius.circular(8), - ), - child: Row( - children: [ - const Icon(Icons.warning_amber_rounded, color: Colors.orange), - const SizedBox(width: 8), - const Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - '你的补充医保待激活', - style: TextStyle(fontWeight: FontWeight.bold), - ), - Text( - '√ 医保内外都能报 √ 带病投保首选', - style: TextStyle(color: Colors.grey, fontSize: 12), - ), - ], - ), - ), - ElevatedButton( - onPressed: () {}, - style: ElevatedButton.styleFrom( - backgroundColor: Colors.orange, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(18.0), - ), - ), - child: const Text('去激活'), - ), - ], - ), - ), - ], - ), - ); - } - - // 构建医生问诊横幅 - Widget _buildDoctorBanner() { - return Container( - margin: const EdgeInsets.symmetric(horizontal: 16), - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - image: const DecorationImage( - // 模拟医生背景图 - image: NetworkImage( - 'https://img.tukuppt.com/png_preview/00/34/83/8fT4fFFaLg.jpg!/fw/780', - ), // 使用一个示例医生图片 URL - fit: BoxFit.cover, - alignment: Alignment.centerRight, - opacity: 0.8, - ), - ), - child: const Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - '三甲医生快速问诊', - style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), - ), - SizedBox(height: 4), - Text('100%公立医生 不限制问诊次数', style: TextStyle(color: Colors.grey)), - ], - ), - // 医生图片通过 DecorationImage 实现 - ], - ), - ); - } - - // 构建热门服务部分 - Widget _buildPopularServices() { - return Container( - margin: const EdgeInsets.symmetric(horizontal: 16), - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - ), - child: Column( - children: [ - const Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '热门服务', - style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16), - ), - Text('专病专科', style: TextStyle(color: Colors.grey)), - Text('健康百科', style: TextStyle(color: Colors.grey)), - Row( - children: [ - Text('更多', style: TextStyle(color: Colors.grey)), - Icon(Icons.arrow_forward_ios, size: 12, color: Colors.grey), - ], - ), - ], - ), - const SizedBox(height: 16), - Row( - children: [ - _buildServiceCard( - '百万医疗险', - '600万医疗保障', - Icons.add_to_photos, - Colors.blue, - ), - const SizedBox(width: 12), - _buildServiceCard( - '百万住院保障', - '医保内外都可报', - Icons.security, - Colors.cyan, - ), - ], - ), - const SizedBox(height: 12), - Row( - children: [ - _buildServiceCard( - '医保种牙', - '种植牙方案科普', - Icons.mood, - Colors.lightBlue, - ), - const SizedBox(width: 12), - _buildServiceCard( - '我的家', - '家人健康我守护', - Icons.home, - Colors.purpleAccent, - ), - ], - ), - ], - ), - ); - } - - // 服务卡片的小组件 - Widget _buildServiceCard( - String title, - String subtitle, - IconData icon, - Color color, - ) { - return Expanded( - child: Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: color.withOpacity(0.1), - borderRadius: BorderRadius.circular(8), - ), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 4), - Text( - subtitle, - style: const TextStyle(fontSize: 12, color: Colors.grey), - ), - ], - ), - ), - Icon(icon, color: color, size: 30), - ], - ), - ), - ); - } - - // 构建底部导航栏 - Widget _buildBottomNavigationBar() { - return BottomNavigationBar( - currentIndex: _bottomNavIndex, - onTap: (index) { - setState(() { - _bottomNavIndex = index; - }); - }, - type: BottomNavigationBarType.fixed, - selectedItemColor: Colors.blue, - unselectedItemColor: Colors.grey, - items: const [ - BottomNavigationBarItem(icon: Icon(Icons.home), label: '企业'), - BottomNavigationBarItem( - icon: Icon(Icons.card_membership), - label: '全部问题', - ), - // BottomNavigationBarItem(icon: Icon(Icons.waves), label: 'AQ-健康管家'), - // BottomNavigationBarItem(icon: Icon(Icons.add_moderator), label: '医疗保障'), - BottomNavigationBarItem(icon: Icon(Icons.person_outline), label: '我的'), - ], - ); - } -}