feat: 增加侧滑事件

This commit is contained in:
2025-12-02 06:09:25 -08:00
parent 8e27ddeded
commit e82480b937
13 changed files with 669 additions and 250 deletions
@@ -6,6 +6,8 @@ import 'package:flutter_html/flutter_html.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:kaer_with_panels/app/widgets/hi_base_scaffold.dart';
import '../../../routes/app_pages.dart';
import 'package:kaer_with_panels/app/widgets/swipe/has_swipe_config.dart';
import 'package:kaer_with_panels/app/widgets/swipe/swipe_config.dart';
import '../controllers/hi_menu_controller.dart';
import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
import 'package:kaer_with_panels/app/localization/app_translations.dart';
@@ -16,9 +18,15 @@ import 'package:kaer_with_panels/app/common/app_run_data.dart';
import 'package:kaer_with_panels/app/modules/hi_menu/widgets/hi_menu_list_item.dart';
import 'package:kaer_with_panels/app/modules/hi_menu/widgets/user_info_card.dart';
class HIMenuView extends GetView<HIMenuController> {
class HIMenuView extends GetView<HIMenuController> implements HasSwipeConfig {
const HIMenuView({super.key});
@override
SwipeConfig get swipeConfig => SwipeConfig(
enableRight: true,
onRight: () => Get.offNamed(Routes.KR_HOME),
);
@override
Widget build(BuildContext context) {
return HIBaseScaffold(
@@ -37,9 +45,13 @@ class HIMenuView extends GetView<HIMenuController> {
mainAxisSize: MainAxisSize.min, // 让 Column 包裹内容
children: [
Obx(() {
final account = KRAppRunData.getInstance().kr_account.value;
final isDeviceLogin = account != null && account.startsWith('9000');
final accountText = (account ==null || isDeviceLogin) ? '待绑定' : '${KRAppRunData.getInstance().kr_account.value.toString()}';
final account =
KRAppRunData.getInstance().kr_account.value;
final isDeviceLogin =
account != null && account.startsWith('9000');
final accountText = (account == null || isDeviceLogin)
? '待绑定'
: '${KRAppRunData.getInstance().kr_account.value.toString()}';
return UserInfoCard(
controller: controller,
userId: accountText,
@@ -51,7 +63,8 @@ class HIMenuView extends GetView<HIMenuController> {
// ListView.separated 现在也会继承 Padding 的约束
ListView.separated(
shrinkWrap: true, // 让 ListView 高度自适应内容
physics: const NeverScrollableScrollPhysics(), // 在 Stack 中,禁用其自身的滚动
physics:
const NeverScrollableScrollPhysics(), // 在 Stack 中,禁用其自身的滚动
itemCount: _menuItems.length,
// 渲染每一项
itemBuilder: (context, index) {
@@ -68,7 +81,7 @@ class HIMenuView extends GetView<HIMenuController> {
],
),
// 版本号信息
Obx((){
Obx(() {
// 1. 从 Obx 的回调函数中 return 一个 Widget
return Positioned(
bottom: 40.0,
@@ -91,7 +104,6 @@ class HIMenuView extends GetView<HIMenuController> {
}
}
const List<MenuItem> _menuItems = [
MenuItem(
iconName: 'icon-1',
@@ -118,4 +130,4 @@ const List<MenuItem> _menuItems = [
title: '在线客服',
route: Routes.KR_CRISP,
),
];
];