41 lines
1.4 KiB
Dart
41 lines
1.4 KiB
Dart
import 'dart:convert';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter/services.dart';
|
||
import 'package:get/get.dart';
|
||
import 'package:wallpaper/common/models/wallpaper_model.dart';
|
||
import 'package:wallpaper/generated/assets.dart';
|
||
import 'package:wallpaper/generated/json/base/json_convert_content.dart';
|
||
import 'package:wallpaper/modules/home/home_cls/home_cls_view.dart';
|
||
|
||
class HomeController extends GetxController with GetTickerProviderStateMixin {
|
||
static HomeController get to => Get.find<HomeController>();
|
||
late TabController tabController;
|
||
var wallpaperModelList = <WallpaperModel>[];
|
||
var clsPages = <HomeClsView>[];
|
||
|
||
@override
|
||
void onReady() async {
|
||
super.onReady();
|
||
// 读取json文件,获取数据
|
||
var data = jsonDecode(await rootBundle.loadString(Assets.jsonWallpaper));
|
||
if (data != null && data is List) {
|
||
wallpaperModelList = data.map((e) => WallpaperModel.fromJson(e)).toList();
|
||
}
|
||
wallpaperModelList = JsonConvert.fromJsonAsT<List<WallpaperModel>>(data) ?? <WallpaperModel>[];
|
||
tabController = TabController(length: wallpaperModelList.length, vsync: this);
|
||
clsPages = wallpaperModelList.asMap().entries.map((e) => HomeClsView(index: e.key)).toList();
|
||
refresh();
|
||
}
|
||
|
||
@override
|
||
void onClose() {
|
||
tabController.dispose();
|
||
super.onClose();
|
||
}
|
||
|
||
/// 获取分类下的壁纸
|
||
WallpaperModel getWallpaperData(int index) {
|
||
return wallpaperModelList[index];
|
||
}
|
||
}
|