feat: A3 数据层 AppCatalogController(feed/详情/分类加载,供页面切换)
This commit is contained in:
1 parent
88a401512d
commit
070ec78668
2 files changed
+47
No files matched your search
@@ -7,7 +7,9 @@ import 'core/config/locale_controller.dart';
|
|||||||
import 'core/data/repositories/auth_repository.dart';
|
import 'core/data/repositories/auth_repository.dart';
|
||||||
import 'core/data/repositories/catalog_repository.dart';
|
import 'core/data/repositories/catalog_repository.dart';
|
||||||
import 'core/data/repositories/engagement_repository.dart';
|
import 'core/data/repositories/engagement_repository.dart';
|
||||||
|
import 'core/data/repositories/http_catalog_repository.dart';
|
||||||
import 'core/data/services/api_client.dart';
|
import 'core/data/services/api_client.dart';
|
||||||
|
import 'core/data/services/app_catalog_controller.dart';
|
||||||
import 'core/data/services/auth_controller.dart';
|
import 'core/data/services/auth_controller.dart';
|
||||||
import 'core/data/services/catalog_controller.dart';
|
import 'core/data/services/catalog_controller.dart';
|
||||||
import 'core/data/services/engagement_controller.dart';
|
import 'core/data/services/engagement_controller.dart';
|
||||||
@@ -39,6 +41,12 @@ class LumaDramaApp extends StatelessWidget {
|
|||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (ctx) => AuthController(ctx.read<AuthRepository>()),
|
create: (ctx) => AuthController(ctx.read<AuthRepository>()),
|
||||||
),
|
),
|
||||||
|
Provider(
|
||||||
|
create: (ctx) => HttpCatalogRepository(ctx.read<ApiClient>()),
|
||||||
|
),
|
||||||
|
ChangeNotifierProvider(
|
||||||
|
create: (ctx) => AppCatalogController(ctx.read<HttpCatalogRepository>()),
|
||||||
|
),
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (_) => CatalogController(DemoCatalogRepository())..load(),
|
create: (_) => CatalogController(DemoCatalogRepository())..load(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
// Author: fruit.com.cn
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
|
import '../models/app_catalog.dart';
|
||||||
|
import '../repositories/http_catalog_repository.dart';
|
||||||
|
|
||||||
|
/// 首页/发现页 feed 状态(A3 数据层)。
|
||||||
|
class AppCatalogController extends ChangeNotifier {
|
||||||
|
AppCatalogController(this._repository);
|
||||||
|
|
||||||
|
final HttpCatalogRepository _repository;
|
||||||
|
|
||||||
|
AppFeed? feed;
|
||||||
|
bool loading = false;
|
||||||
|
String? error;
|
||||||
|
|
||||||
|
Future<void> loadFeed() async {
|
||||||
|
loading = true;
|
||||||
|
error = null;
|
||||||
|
notifyListeners();
|
||||||
|
try {
|
||||||
|
feed = await _repository.fetchHomeFeed();
|
||||||
|
} catch (e) {
|
||||||
|
error = e.toString();
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<AppDramaDetail> loadDetail(int id) {
|
||||||
|
return _repository.fetchDramaDetail(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<AppCategory>> loadCategories() {
|
||||||
|
return _repository.fetchCategories();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user