导航栏代码,配置文件

This commit is contained in:
2025-11-03 14:19:21 +08:00
parent ac8a6387ef
commit 32fa975fb2
30 changed files with 2014 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
class BaseWidgetsController extends GetxController with BaseControllerMixin {
@override
String get builderId => 'baseWidgets';
BaseWidgetsController();
int pageIndex = 0;
}

View File

@@ -0,0 +1,4 @@
library base_widgets;
export 'controller.dart';
export 'view.dart';

View File

@@ -0,0 +1,91 @@
import 'package:flutter/material.dart';
import 'package:getx_scaffold/common/index.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'package:ln_jq_app/pages/c_page/car_info/view.dart';
import 'package:ln_jq_app/pages/c_page/map/view.dart';
import 'package:ln_jq_app/pages/c_page/mine/view.dart';
import 'package:ln_jq_app/pages/c_page/reservation/view.dart';
import 'package:ln_jq_app/pages/demo/index.dart';
import 'index.dart';
class BaseWidgetsPage extends GetView<BaseWidgetsController> {
BaseWidgetsPage({super.key});
final PageController _pageController = PageController();
// 主视图
Widget _buildView() {
return PageView(
controller: _pageController,
onPageChanged: (index) {
jumpTabAndPage(index);
},
children: _buildPages(), // 页面的列表
);
}
void jumpTabAndPage(int index) {
controller.pageIndex = index; // 更新页面索引
controller.updateUi(); // 更新 UI
_pageController.jumpToPage(controller.pageIndex);
}
// 对应的页面
List<Widget> _buildPages() {
return [
MapPage(),
ReservationPage(),
CarInfoPage(),
MinePage(),
];
}
//导航栏
Widget _buildNavigationBar() {
return NavigationX(
currentIndex: controller.pageIndex, // 当前选中的tab索引
onTap: (index) {
jumpTabAndPage(index);
}, // 切换tab事件
items: [
NavigationItemModel(
label: '地图',
icon: AntdIcon.location,
selectedIcon: AntdIcon.location_fill,
dot: false,
),
NavigationItemModel(
label: '加氢预约',
icon: AntdIcon.orderedlist,
selectedIcon: AntdIcon.calendar_fill,
badge: '99+',
dot: true,
),
NavigationItemModel(
label: '车辆信息',
icon: AntdIcon.car,
selectedIcon: AntdIcon.car_fill,
),
NavigationItemModel(
label: '我的',
icon: AntdIcon.user,
selectedIcon: AntdIcon.user,
),
],
);
}
@override
Widget build(BuildContext context) {
return GetBuilder<BaseWidgetsController>(
init: BaseWidgetsController(),
id: 'baseWidgets',
builder: (_) {
return Scaffold(
extendBody: false,
resizeToAvoidBottomInset: false,
bottomNavigationBar: _buildNavigationBar(),
body: SafeArea(child: _buildView()),
);
},
);
}
}

View File

@@ -0,0 +1,18 @@
import 'package:getx_scaffold/getx_scaffold.dart';
class CarInfoController extends GetxController with BaseControllerMixin {
@override
String get builderId => 'car_info';
CarInfoController();
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}

View File

@@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'controller.dart';
class CarInfoPage extends GetView<CarInfoController> {
const CarInfoPage({super.key});
// 主视图
Widget _buildView() {
return <Widget>[
TextX.titleLarge('车辆信息'),
].toColumn(mainAxisSize: MainAxisSize.min).center();
}
@override
Widget build(BuildContext context) {
return GetBuilder<CarInfoController>(
init: CarInfoController(),
id: 'car_info',
builder: (_) {
return _buildView();
},
);
}
}

View File

@@ -0,0 +1,18 @@
import 'package:getx_scaffold/getx_scaffold.dart';
class MapController extends GetxController with BaseControllerMixin {
@override
String get builderId => 'map';
MapController();
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}

View File

@@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'controller.dart';
class MapPage extends GetView<MapController> {
const MapPage({super.key});
// 主视图
Widget _buildView() {
return <Widget>[
TextX.titleLarge('地图'),
].toColumn(mainAxisSize: MainAxisSize.min).center();
}
@override
Widget build(BuildContext context) {
return GetBuilder<MapController>(
init: MapController(),
id: 'map',
builder: (_) {
return _buildView();
},
);
}
}

View File

@@ -0,0 +1,18 @@
import 'package:getx_scaffold/getx_scaffold.dart';
class MineController extends GetxController with BaseControllerMixin {
@override
String get builderId => 'mine';
MineController();
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}

View File

@@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'controller.dart';
class MinePage extends GetView<MineController> {
const MinePage({super.key});
// 主视图
Widget _buildView() {
return <Widget>[
TextX.titleLarge('我的'),
].toColumn(mainAxisSize: MainAxisSize.min).center();
}
@override
Widget build(BuildContext context) {
return GetBuilder<MineController>(
init: MineController(),
id: 'mine',
builder: (_) {
return _buildView();
},
);
}
}

View File

@@ -0,0 +1,18 @@
import 'package:getx_scaffold/getx_scaffold.dart';
class ReservationController extends GetxController with BaseControllerMixin {
@override
String get builderId => 'reservation';
ReservationController();
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}

View File

@@ -0,0 +1,27 @@
import 'package:flutter/material.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'controller.dart';
class ReservationPage extends GetView<ReservationController> {
const ReservationPage({super.key});
// 主视图
Widget _buildView() {
return <Widget>[
TextX.titleLarge('H2加氢站'),
].toColumn(mainAxisSize: MainAxisSize.min).center();
}
@override
Widget build(BuildContext context) {
return GetBuilder<ReservationController>(
init: ReservationController(),
id: 'reservation',
builder: (_) {
return _buildView();
},
);
}
}