mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-21 17:46:24 +08:00
committed by
GitHub
parent
acb3784071
commit
218e829fd4
4
lib/models/common/enum_with_label.dart
Normal file
4
lib/models/common/enum_with_label.dart
Normal file
@@ -0,0 +1,4 @@
|
||||
abstract class EnumWithLabel {
|
||||
String get label;
|
||||
int get index;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'package:PiliPlus/models/common/enum_with_label.dart';
|
||||
import 'package:PiliPlus/pages/bangumi/controller.dart';
|
||||
import 'package:PiliPlus/pages/bangumi/view.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/hot/controller.dart';
|
||||
import 'package:PiliPlus/pages/hot/view.dart';
|
||||
import 'package:PiliPlus/pages/live/controller.dart';
|
||||
@@ -8,9 +10,10 @@ import 'package:PiliPlus/pages/rank/controller.dart';
|
||||
import 'package:PiliPlus/pages/rank/view.dart';
|
||||
import 'package:PiliPlus/pages/rcmd/controller.dart';
|
||||
import 'package:PiliPlus/pages/rcmd/view.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
enum HomeTabType {
|
||||
enum HomeTabType implements EnumWithLabel {
|
||||
live('直播'),
|
||||
rcmd('推荐'),
|
||||
hot('热门'),
|
||||
@@ -18,45 +21,26 @@ enum HomeTabType {
|
||||
bangumi('番剧'),
|
||||
cinema('影视');
|
||||
|
||||
final String description;
|
||||
const HomeTabType(this.description);
|
||||
}
|
||||
@override
|
||||
final String label;
|
||||
const HomeTabType(this.label);
|
||||
|
||||
List get homeTabsConfig => [
|
||||
{
|
||||
'label': '直播',
|
||||
'type': HomeTabType.live,
|
||||
'ctr': Get.find<LiveController>,
|
||||
'page': const LivePage(),
|
||||
},
|
||||
{
|
||||
'label': '推荐',
|
||||
'type': HomeTabType.rcmd,
|
||||
'ctr': Get.find<RcmdController>,
|
||||
'page': const RcmdPage(),
|
||||
},
|
||||
{
|
||||
'label': '热门',
|
||||
'type': HomeTabType.hot,
|
||||
'ctr': Get.find<HotController>,
|
||||
'page': const HotPage(),
|
||||
},
|
||||
{
|
||||
'label': '分区',
|
||||
'type': HomeTabType.rank,
|
||||
'ctr': Get.find<RankController>,
|
||||
'page': const RankPage(),
|
||||
},
|
||||
{
|
||||
'label': '番剧',
|
||||
'type': HomeTabType.bangumi,
|
||||
'ctr': Get.find<BangumiController>,
|
||||
'page': const BangumiPage(tabType: HomeTabType.bangumi),
|
||||
},
|
||||
{
|
||||
'label': '影视',
|
||||
'type': HomeTabType.cinema,
|
||||
'ctr': Get.find<BangumiController>,
|
||||
'page': const BangumiPage(tabType: HomeTabType.cinema),
|
||||
},
|
||||
];
|
||||
ScrollOrRefreshMixin Function() get ctr => switch (this) {
|
||||
HomeTabType.live => Get.find<LiveController>,
|
||||
HomeTabType.rcmd => Get.find<RcmdController>,
|
||||
HomeTabType.hot => Get.find<HotController>,
|
||||
HomeTabType.rank =>
|
||||
(Get.find<RankController>) as ScrollOrRefreshMixin Function(),
|
||||
HomeTabType.bangumi || HomeTabType.cinema => () =>
|
||||
Get.find<BangumiController>(tag: name),
|
||||
};
|
||||
|
||||
Widget get page => switch (this) {
|
||||
HomeTabType.live => const LivePage(),
|
||||
HomeTabType.rcmd => const RcmdPage(),
|
||||
HomeTabType.hot => const HotPage(),
|
||||
HomeTabType.rank => const RankPage(),
|
||||
HomeTabType.bangumi => const BangumiPage(tabType: HomeTabType.bangumi),
|
||||
HomeTabType.cinema => const BangumiPage(tabType: HomeTabType.cinema),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,68 +1,34 @@
|
||||
import 'package:PiliPlus/models/common/enum_with_label.dart';
|
||||
import 'package:PiliPlus/pages/dynamics/view.dart';
|
||||
import 'package:PiliPlus/pages/home/view.dart';
|
||||
import 'package:PiliPlus/pages/media/view.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// enum NavigationBarType {
|
||||
// home(
|
||||
// '首页',
|
||||
// Icon(Icons.home_outlined, size: 23),
|
||||
// Icon(Icons.home, size: 21),
|
||||
// ),
|
||||
// dynamics(
|
||||
// '动态',
|
||||
// Icon(Icons.motion_photos_on_outlined, size: 21),
|
||||
// Icon(Icons.motion_photos_on, size: 21),
|
||||
// ),
|
||||
// media(
|
||||
// '媒体库',
|
||||
// Icon(Icons.video_collection_outlined, size: 21),
|
||||
// Icon(Icons.video_collection, size: 21),
|
||||
// );
|
||||
enum NavigationBarType implements EnumWithLabel {
|
||||
home(
|
||||
'首页',
|
||||
Icon(Icons.home_outlined, size: 23),
|
||||
Icon(Icons.home, size: 21),
|
||||
HomePage(),
|
||||
),
|
||||
dynamics(
|
||||
'动态',
|
||||
Icon(Icons.motion_photos_on_outlined, size: 21),
|
||||
Icon(Icons.motion_photos_on, size: 21),
|
||||
DynamicsPage(),
|
||||
),
|
||||
media(
|
||||
'媒体库',
|
||||
Icon(Icons.video_collection_outlined, size: 21),
|
||||
Icon(Icons.video_collection, size: 21),
|
||||
MediaPage(),
|
||||
);
|
||||
|
||||
// final Icon icon;
|
||||
// final Icon selectIcon;
|
||||
// final String label;
|
||||
@override
|
||||
final String label;
|
||||
final Icon icon;
|
||||
final Icon selectIcon;
|
||||
final Widget page;
|
||||
|
||||
// const NavigationBarType(this.label, this.icon, this.selectIcon);
|
||||
// }
|
||||
|
||||
// TODO enum
|
||||
List defaultNavigationBars = [
|
||||
{
|
||||
'id': 0,
|
||||
'icon': const Icon(
|
||||
Icons.home_outlined,
|
||||
size: 23,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.home,
|
||||
size: 23,
|
||||
),
|
||||
'label': "首页",
|
||||
'count': 0,
|
||||
},
|
||||
{
|
||||
'id': 1,
|
||||
'icon': const Icon(
|
||||
Icons.motion_photos_on_outlined,
|
||||
size: 21,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.motion_photos_on,
|
||||
size: 21,
|
||||
),
|
||||
'label': "动态",
|
||||
'count': 0,
|
||||
},
|
||||
{
|
||||
'id': 2,
|
||||
'icon': const Icon(
|
||||
Icons.video_collection_outlined,
|
||||
size: 21,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.video_collection,
|
||||
size: 21,
|
||||
),
|
||||
'label': "媒体库",
|
||||
'count': 0,
|
||||
}
|
||||
];
|
||||
const NavigationBarType(this.label, this.icon, this.selectIcon, this.page);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user