导航栏代码,配置文件
This commit is contained in:
14
ln_jq_app/lib/pages/c_page/base_widgets/controller.dart
Normal file
14
ln_jq_app/lib/pages/c_page/base_widgets/controller.dart
Normal 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;
|
||||
|
||||
}
|
||||
4
ln_jq_app/lib/pages/c_page/base_widgets/index.dart
Normal file
4
ln_jq_app/lib/pages/c_page/base_widgets/index.dart
Normal file
@@ -0,0 +1,4 @@
|
||||
library base_widgets;
|
||||
|
||||
export 'controller.dart';
|
||||
export 'view.dart';
|
||||
91
ln_jq_app/lib/pages/c_page/base_widgets/view.dart
Normal file
91
ln_jq_app/lib/pages/c_page/base_widgets/view.dart
Normal 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()),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
18
ln_jq_app/lib/pages/c_page/car_info/controller.dart
Normal file
18
ln_jq_app/lib/pages/c_page/car_info/controller.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
26
ln_jq_app/lib/pages/c_page/car_info/view.dart
Normal file
26
ln_jq_app/lib/pages/c_page/car_info/view.dart
Normal 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();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
18
ln_jq_app/lib/pages/c_page/map/controller.dart
Normal file
18
ln_jq_app/lib/pages/c_page/map/controller.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
26
ln_jq_app/lib/pages/c_page/map/view.dart
Normal file
26
ln_jq_app/lib/pages/c_page/map/view.dart
Normal 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();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
18
ln_jq_app/lib/pages/c_page/mine/controller.dart
Normal file
18
ln_jq_app/lib/pages/c_page/mine/controller.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
26
ln_jq_app/lib/pages/c_page/mine/view.dart
Normal file
26
ln_jq_app/lib/pages/c_page/mine/view.dart
Normal 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();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
18
ln_jq_app/lib/pages/c_page/reservation/controller.dart
Normal file
18
ln_jq_app/lib/pages/c_page/reservation/controller.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
27
ln_jq_app/lib/pages/c_page/reservation/view.dart
Normal file
27
ln_jq_app/lib/pages/c_page/reservation/view.dart
Normal 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();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user