feat(reward): 新增客户端奖励中心
This commit is contained in:
1 parent
67670d46b1
commit
bea08110c9
68 files changed
+3987
-332
No files matched your search
@@ -75,7 +75,7 @@ class HomeLogic extends ChangeNotifier {
|
||||
String? episodeId,
|
||||
}) => playDramaFromCatalog(context, drama, episodeId: episodeId);
|
||||
|
||||
void openProfile() => select(3);
|
||||
void openProfile() => select(4);
|
||||
|
||||
void discoverAction(DiscoverPageAction action) {
|
||||
switch (action) {
|
||||
@@ -83,10 +83,12 @@ class HomeLogic extends ChangeNotifier {
|
||||
select(0);
|
||||
case DiscoverPageAction.recommend:
|
||||
select(1);
|
||||
case DiscoverPageAction.following:
|
||||
case DiscoverPageAction.reward:
|
||||
select(2);
|
||||
case DiscoverPageAction.mine:
|
||||
case DiscoverPageAction.following:
|
||||
select(3);
|
||||
case DiscoverPageAction.mine:
|
||||
select(4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +105,7 @@ class HomeLogic extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void openFollowingHistory() {
|
||||
tab = 2;
|
||||
tab = 3;
|
||||
followingHistoryRequest += 1;
|
||||
notify();
|
||||
}
|
||||
@@ -114,10 +116,12 @@ class HomeLogic extends ChangeNotifier {
|
||||
select(0);
|
||||
case MyPageAction.recommend:
|
||||
select(1);
|
||||
case MyPageAction.following:
|
||||
case MyPageAction.reward:
|
||||
select(2);
|
||||
case MyPageAction.mine:
|
||||
case MyPageAction.following:
|
||||
select(3);
|
||||
case MyPageAction.mine:
|
||||
select(4);
|
||||
case MyPageAction.resume:
|
||||
select(0, resume: true);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:provider/provider.dart';
|
||||
|
||||
import '../../core/data/remote/catalog_api.dart';
|
||||
import '../../core/data/services/home_feed_controller.dart';
|
||||
import '../../core/data/models/reward.dart';
|
||||
import '../../core/data/services/catalog_controller.dart';
|
||||
import '../../core/data/services/category_controller.dart';
|
||||
import '../../core/data/services/favorite_controller.dart';
|
||||
@@ -21,6 +22,7 @@ import '../following/following_page.dart';
|
||||
import '../mine/mine_types.dart';
|
||||
import '../recommend/recommend_page.dart';
|
||||
import '../recommend/recommend_discover_page.dart';
|
||||
import '../reward/reward_page.dart';
|
||||
import '../mine/mine_view.dart';
|
||||
import '../wallet/wallet_page.dart';
|
||||
import 'home_binding.dart';
|
||||
@@ -105,7 +107,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
||||
}
|
||||
}
|
||||
|
||||
/// 四个根页面共享同一路由并保持各自状态。
|
||||
/// 五个根页面共享同一路由并保持各自状态。
|
||||
class _HomeTabs extends StatefulWidget {
|
||||
const _HomeTabs({super.key, required this.feedController});
|
||||
|
||||
@@ -164,11 +166,12 @@ class _HomeTabsState extends State<_HomeTabs> {
|
||||
final builders = <WidgetBuilder>[
|
||||
_recommend,
|
||||
_recommendDiscover,
|
||||
_reward,
|
||||
(context) => FollowingPage(
|
||||
onGoHome: () => logic.select(0),
|
||||
favoriteController: context.read<FavoriteController>(),
|
||||
historyRequest: logic.followingHistoryRequest,
|
||||
visible: logic.tab == 2,
|
||||
visible: logic.tab == 3,
|
||||
),
|
||||
_my,
|
||||
];
|
||||
@@ -218,7 +221,7 @@ class _HomeTabsState extends State<_HomeTabs> {
|
||||
|
||||
Widget _my(BuildContext context) {
|
||||
return MyPage(
|
||||
active: logic.tab == 3,
|
||||
active: logic.tab == 4,
|
||||
callbacks: MyPageCallbacks(
|
||||
onAction: logic.myAction,
|
||||
onOpenHistoryTab: logic.openFollowingHistory,
|
||||
@@ -226,6 +229,26 @@ class _HomeTabsState extends State<_HomeTabs> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _reward(BuildContext context) {
|
||||
return RewardPage(
|
||||
active: logic.tab == 2,
|
||||
onBack: () => logic.select(0),
|
||||
onOpenWallet: () => unawaited(_openWallet(context)),
|
||||
onTaskAction: (task) => _handleRewardAction(context, task),
|
||||
);
|
||||
}
|
||||
|
||||
void _handleRewardAction(BuildContext context, RewardTask task) {
|
||||
switch (task.actionType) {
|
||||
case 'OPEN_PROFILE':
|
||||
logic.select(4);
|
||||
case 'OPEN_WALLET':
|
||||
unawaited(_openWallet(context));
|
||||
default:
|
||||
logic.select(0);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _nav(BuildContext context) {
|
||||
return AppRootBottomNav(
|
||||
barKey: const Key('home-tabs-bar'),
|
||||
@@ -243,9 +266,9 @@ class _HomeTabsState extends State<_HomeTabs> {
|
||||
}
|
||||
}
|
||||
|
||||
/// 四个根 tab 的容器:只有被访问过的 tab 才真正构建并常驻。
|
||||
/// 五个根 tab 的容器:只有被访问过的 tab 才真正构建并常驻。
|
||||
///
|
||||
/// 冷启动时只建推荐页,其余 tab 等第一次切过去再建,省掉三棵子树和它们各自的请求。
|
||||
/// 冷启动时只建推荐页,其余 tab 等第一次切过去再建,减少首屏子树和请求。
|
||||
class _LazyTabStack extends StatefulWidget {
|
||||
const _LazyTabStack({required this.index, required this.builders});
|
||||
|
||||
|
||||
Reference in new issue
Block a user