47 lines
1.2 KiB
Dart
47 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:wallpaper/modules/favorite/favorite_view.dart';
|
|
import 'package:wallpaper/modules/home/home_view.dart';
|
|
import 'package:wallpaper/modules/me/me_view.dart';
|
|
|
|
class RootController extends GetxController {
|
|
static RootController get to => Get.find<RootController>();
|
|
final pages = [
|
|
PageItem('Home', Icons.home, const HomeView()),
|
|
PageItem('Favorite', Icons.favorite, const FavoriteView()),
|
|
PageItem('Me', Icons.person, const MeView()),
|
|
];
|
|
late PageController pageController;
|
|
var currentIndex = 0.obs;
|
|
|
|
@override
|
|
void onInit() {
|
|
super.onInit();
|
|
pageController = PageController(initialPage: currentIndex.value);
|
|
}
|
|
|
|
@override
|
|
void onClose() {
|
|
pageController.dispose();
|
|
super.onClose();
|
|
}
|
|
|
|
/// PageView页面变化
|
|
void onPageChanged(int index) {
|
|
currentIndex.value = index;
|
|
}
|
|
|
|
/// BottomNavigationBar切换
|
|
void onTabTapped(int index) {
|
|
pageController.jumpToPage(index);
|
|
}
|
|
}
|
|
|
|
class PageItem {
|
|
late final String label;
|
|
late final IconData icons;
|
|
late final StatelessWidget widget;
|
|
|
|
PageItem(this.label, this.icons, this.widget);
|
|
}
|