From 070ec78668e62633d1e26b5d2d300093016b6883 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Sat, 17 Oct 2026 02:43:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20A3=20=E6=95=B0=E6=8D=AE=E5=B1=82=20AppC?= =?UTF-8?q?atalogController=EF=BC=88feed/=E8=AF=A6=E6=83=85/=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E5=8A=A0=E8=BD=BD=EF=BC=8C=E4=BE=9B=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=88=87=E6=8D=A2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/app.dart | 8 ++++ .../data/services/app_catalog_controller.dart | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 lib/core/data/services/app_catalog_controller.dart diff --git a/lib/app.dart b/lib/app.dart index 265e197..e03d62c 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -7,7 +7,9 @@ import 'core/config/locale_controller.dart'; import 'core/data/repositories/auth_repository.dart'; import 'core/data/repositories/catalog_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/app_catalog_controller.dart'; import 'core/data/services/auth_controller.dart'; import 'core/data/services/catalog_controller.dart'; import 'core/data/services/engagement_controller.dart'; @@ -39,6 +41,12 @@ class LumaDramaApp extends StatelessWidget { ChangeNotifierProvider( create: (ctx) => AuthController(ctx.read()), ), + Provider( + create: (ctx) => HttpCatalogRepository(ctx.read()), + ), + ChangeNotifierProvider( + create: (ctx) => AppCatalogController(ctx.read()), + ), ChangeNotifierProvider( create: (_) => CatalogController(DemoCatalogRepository())..load(), ), diff --git a/lib/core/data/services/app_catalog_controller.dart b/lib/core/data/services/app_catalog_controller.dart new file mode 100644 index 0000000..9f8d69c --- /dev/null +++ b/lib/core/data/services/app_catalog_controller.dart @@ -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 loadFeed() async { + loading = true; + error = null; + notifyListeners(); + try { + feed = await _repository.fetchHomeFeed(); + } catch (e) { + error = e.toString(); + } finally { + loading = false; + notifyListeners(); + } + } + + Future loadDetail(int id) { + return _repository.fetchDramaDetail(id); + } + + Future> loadCategories() { + return _repository.fetchCategories(); + } +}