news_getx/lib/modules/main/main_controller.dart

58 lines
1.9 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 'package:get/get.dart';
import 'package:news_getx/data/model/news.dart';
import 'package:news_getx/data/repository/news_repository.dart';
import 'package:news_getx/modules/main/main_state.dart';
class MainController extends GetxController {
NewsRepository newsRepository;
MainController({required this.newsRepository});
/// 响应式成员变量
/// 在Getx中当一个对象被注册为可观察对象Observable
/// Getx会自动将其所有属性都转换为可观察属性Observable
/// 这意味着无论是直接在GetxController中定义的属性
/// 还是在其内部嵌套的对象中定义的属性,
/// 只要它们被定义为可观察属性GetxController都会监听它们的变化。
final state = MainState();
/// 方法
// 拉取数据
asyncLoadAllData() async {
print('开始拉取数据');
state.categories = await newsRepository.categories(cacheDisk: true);
state.channels = await newsRepository.channels(cacheDisk: true);
// 分类对应的数据(推荐、新闻)
state.newsRecommend = await newsRepository.newsRecommend(cacheDisk: true);
state.newsPageList = await newsRepository.newsPageList(cacheDisk: true);
// 所选分类
state.selCategoryCode = state.categories?.first.code;
}
// 拉取推荐、新闻
asyncLoadNewsData(
categoryCode, {
bool refresh = false,
}) async {
state.selCategoryCode = categoryCode;
state.newsRecommend = await newsRepository.newsRecommend(
params: NewsRecommendRequest(categoryCode: categoryCode),
refresh: refresh,
cacheDisk: true,
);
state.newsPageList = await newsRepository.newsPageList(
params: NewsPageListRequest(categoryCode: categoryCode),
refresh: refresh,
cacheDisk: true,
);
}
/// 生命周期
@override
void onReady() {
super.onReady();
// 异步拉取数据
asyncLoadAllData();
}
}