WallPaper_FSX_Flutter/lib/modules/root/root_controller.dart
fengshengxiong 9caadfb09a 1.按照UI图修改
2.完善其他功能
2024-05-17 17:02:22 +08:00

116 lines
3.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:convert';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:now_wallpaper/common/components/view_state_widget.dart';
import 'package:now_wallpaper/generated/assets.dart';
import 'package:now_wallpaper/models/wallpaper_model.dart';
import 'package:now_wallpaper/modules/catalog/catalog_controller.dart';
import 'package:now_wallpaper/modules/catalog/catalog_view.dart';
import 'package:now_wallpaper/modules/discover/discover_controller.dart';
import 'package:now_wallpaper/modules/discover/discover_view.dart';
import 'package:now_wallpaper/modules/favorite/favorite_controller.dart';
import 'package:now_wallpaper/modules/favorite/favorite_view.dart';
import 'package:now_wallpaper/routes/app_pages.dart';
class RootController extends GetxController {
static RootController get to => Get.find<RootController>();
final pages = [
PageItem('Discover', [Assets.imagesDiscoverUnchecked, Assets.imagesDiscoverSelected], const DiscoverView()),
PageItem('Favorite', [Assets.imagesFavoriteUnchecked, Assets.imagesFavoriteSelected], const FavoriteView()),
PageItem('Catalog', [Assets.imagesCatalogUnchecked, Assets.imagesCatalogSelected], const CatalogView()),
];
late PageController pageController;
var currentIndex = 0.obs;
var wallpaperModelList = <WallpaperModel>[];
var viewState = ViewState.loading;
@override
void onInit() {
super.onInit();
pageController = PageController(initialPage: currentIndex.value);
}
@override
void onReady() {
super.onReady();
_getAllData();
}
@override
void onClose() {
pageController.dispose();
super.onClose();
}
/// PageView页面改变回调
void onPageChanged(int index) {
currentIndex.value = index;
}
/// 点击BottomNavigationBar
void onTapNavigationBar(int index) {
pageController.jumpToPage(index);
}
/// 点击设置
void onTapSettings() {
Get.toNamed(AppPages.settings);
}
// void _showPopMenu(context) {
// showMenu(
// context: context,
// surfaceTintColor: Colors.white,
// position: RelativeRect.fromLTRB(double.infinity, statusToolBarHeight, 0.0, 0.0),
// items: [
// PopupMenuItem<String>(
// value: 'delete',
// onTap: deleteOnTap,
// child: const ListTile(
// leading: Icon(Icons.delete),
// title: Text('Delete All'),
// ),
// ),
// ],
// );
// }
/// 获取所有数据
Future<void> _getAllData() async {
// 读取json文件获取数据
var data = jsonDecode(await rootBundle.loadString(Assets.jsonWallpaper));
if (data != null && data is List) {
wallpaperModelList = data.map((e) => WallpaperModel.fromJson(e)).toList();
viewState = wallpaperModelList.isNotEmpty ? ViewState.normal : ViewState.empty;
}
if (Get.isRegistered<DiscoverController>()) {
DiscoverController.to.getData();
}
if (Get.isRegistered<FavoriteController>()) {
FavoriteController.to.getTodayHottestList();
}
if (Get.isRegistered<CatalogController>()) {
CatalogController.to.getData();
}
}
/// 随机取一个分类
WallpaperModel? getRandomCls() {
if (wallpaperModelList.isNotEmpty) {
Random random = Random();
int i = random.nextInt(wallpaperModelList.length);
return wallpaperModelList[i];
}
return null;
}
}
class PageItem {
late final String label;
late final List<String> icons;
late final StatelessWidget widget;
PageItem(this.label, this.icons, this.widget);
}