v1.0.1
This commit is contained in:
282
lib/routes/app_navigator.dart
Normal file
282
lib/routes/app_navigator.dart
Normal file
@@ -0,0 +1,282 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_dmzj/app/log.dart';
|
||||
import 'package:flutter_dmzj/models/comic/detail_info.dart';
|
||||
import 'package:flutter_dmzj/models/comment/comment_item.dart';
|
||||
import 'package:flutter_dmzj/models/novel/novel_detail_model.dart';
|
||||
import 'package:flutter_dmzj/routes/route_path.dart';
|
||||
import 'package:flutter_dmzj/services/comic_download_service.dart';
|
||||
import 'package:flutter_dmzj/services/novel_download_service.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
class AppNavigator {
|
||||
/// 当前内容路由的名称
|
||||
static String currentContentRouteName = "/";
|
||||
|
||||
/// 子路由ID
|
||||
static const int kSubNavigatorID = 1;
|
||||
|
||||
/// 子路由Key
|
||||
static final GlobalKey<NavigatorState>? subNavigatorKey =
|
||||
Get.nestedKey(kSubNavigatorID);
|
||||
|
||||
/// 子路由的Context
|
||||
static BuildContext get subNavigatorContext =>
|
||||
subNavigatorKey!.currentContext!;
|
||||
|
||||
static void toPage(String name, {dynamic arg}) {
|
||||
Get.toNamed(name, arguments: arg);
|
||||
}
|
||||
|
||||
/// 跳转子路由页面
|
||||
static void toContentPage(String name, {dynamic arg, bool replace = false}) {
|
||||
if (currentContentRouteName == name && replace) {
|
||||
Get.offAndToNamed(name, arguments: arg, id: kSubNavigatorID);
|
||||
} else {
|
||||
Get.toNamed(name, arguments: arg, id: kSubNavigatorID);
|
||||
}
|
||||
}
|
||||
|
||||
/// 关闭页面
|
||||
/// 优先关闭主路由的页面
|
||||
static void closePage() {
|
||||
if (Navigator.canPop(Get.context!)) {
|
||||
Get.back();
|
||||
} else {
|
||||
Get.back(id: 1);
|
||||
}
|
||||
}
|
||||
|
||||
/// 打开新闻详情
|
||||
static void toNewsDetail({
|
||||
required String url,
|
||||
String title = "资讯详情",
|
||||
int newsId = 0,
|
||||
}) {
|
||||
if (!url.startsWith("http:") && !url.startsWith("https:")) {
|
||||
SmartDialog.showToast("无法打开此此链接:$url");
|
||||
return;
|
||||
}
|
||||
//https://news.dmzj.com/article/77288.html
|
||||
if (url.contains("article/")) {
|
||||
toContentPage(RoutePath.kNewsDetail, arg: {
|
||||
"title": title,
|
||||
"newsUrl": url,
|
||||
"newsId": newsId,
|
||||
});
|
||||
} else {
|
||||
toWebView(url);
|
||||
}
|
||||
}
|
||||
|
||||
/// 打开漫画详情
|
||||
static void toComicDetail(int id) {
|
||||
toContentPage(RoutePath.kComicDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开小说详情
|
||||
static void toNovelDetail(int id) {
|
||||
Log.w("打开小说:$id");
|
||||
toContentPage(RoutePath.kNovelDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开评论
|
||||
static void toComment({
|
||||
required int objId,
|
||||
required int type,
|
||||
}) {
|
||||
toContentPage(RoutePath.kComment, arg: {
|
||||
"objId": objId,
|
||||
"type": type,
|
||||
});
|
||||
}
|
||||
|
||||
/// 打开WebView
|
||||
static void toWebView(String url) {
|
||||
url = url.trimRight().trimLeft();
|
||||
if (Platform.isAndroid || Platform.isIOS) {
|
||||
toContentPage(RoutePath.kWebView, arg: url);
|
||||
} else {
|
||||
launchUrlString(url);
|
||||
}
|
||||
}
|
||||
|
||||
/// 打开漫画分类详情
|
||||
static void toComicCategoryDetail(int id) {
|
||||
toContentPage(RoutePath.kComicCategoryDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开漫画作者详情
|
||||
static void toComicAuthorDetail(int id) {
|
||||
toContentPage(RoutePath.kComicAuthorDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开专题详情
|
||||
static void toSpecialDetail(int id) {
|
||||
toContentPage(RoutePath.kSpecialDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开漫画搜索
|
||||
static void toComicSearch({String keyword = ""}) {
|
||||
toContentPage(RoutePath.kComicSearch, arg: keyword);
|
||||
}
|
||||
|
||||
/// 打开轻小说搜索
|
||||
static void toNovelSearch({String keyword = ""}) {
|
||||
toContentPage(RoutePath.kNovelSearch, arg: keyword);
|
||||
}
|
||||
|
||||
/// 打开漫画分类详情
|
||||
static void toNovelCategoryDetail(int id) {
|
||||
toContentPage(RoutePath.kNovelCategoryDetail, arg: id);
|
||||
}
|
||||
|
||||
/// 打开用户订阅
|
||||
/// - [type] 0=漫画,1=小说,2=新闻
|
||||
static void toUserSubscribe({int type = 0}) {
|
||||
toContentPage(RoutePath.kUserSubscribe, arg: type);
|
||||
}
|
||||
|
||||
/// 打开用户历史记录
|
||||
/// - [type] 0=漫画,1=小说
|
||||
static void toUserHistory({int type = 0}) {
|
||||
toContentPage(RoutePath.kUserHistory, arg: type);
|
||||
}
|
||||
|
||||
/// 打开本地历史记录
|
||||
/// - [type] 0=漫画,1=小说
|
||||
static void toLocalHistory({int type = 0}) {
|
||||
toContentPage(RoutePath.kLocalHistory, arg: type);
|
||||
}
|
||||
|
||||
/// 打开本地历史记录
|
||||
/// - [type] 0=漫画,1=小说,2=下载
|
||||
static void toSettings({int type = 0}) {
|
||||
toContentPage(RoutePath.kSettings, arg: type);
|
||||
}
|
||||
|
||||
/// 打开漫画阅读
|
||||
static Future toComicReader({
|
||||
required int comicId,
|
||||
required String comicTitle,
|
||||
required String comicCover,
|
||||
required List<ComicDetailChapterItem> chapters,
|
||||
required ComicDetailChapterItem chapter,
|
||||
required bool isLongComic,
|
||||
}) async {
|
||||
// 使用主路由跳转
|
||||
await Get.toNamed(RoutePath.kComicReader, arguments: {
|
||||
"comicId": comicId,
|
||||
"comicTitle": comicTitle,
|
||||
"comicCover": comicCover,
|
||||
"chapters": chapters,
|
||||
"chapter": chapter,
|
||||
"isLongComic": isLongComic,
|
||||
});
|
||||
}
|
||||
|
||||
/// 打开漫画阅读
|
||||
static Future toNovelReader({
|
||||
required int novelId,
|
||||
required String novelTitle,
|
||||
required String novelCover,
|
||||
required List<NovelDetailChapter> chapters,
|
||||
required NovelDetailChapter chapter,
|
||||
}) async {
|
||||
// 使用主路由跳转
|
||||
await Get.toNamed(RoutePath.kNovelReader, arguments: {
|
||||
"novelId": novelId,
|
||||
"novelTitle": novelTitle,
|
||||
"novelCover": novelCover,
|
||||
"chapters": chapters,
|
||||
"chapter": chapter,
|
||||
});
|
||||
}
|
||||
|
||||
/// 打开漫画下载-选择章节
|
||||
static void toComicDownloadSelect(int id) {
|
||||
toContentPage(RoutePath.kComicDownloadSelect, arg: id);
|
||||
}
|
||||
|
||||
/// 打开小说下载-选择章节
|
||||
static void toNovelDownloadSelect(int id) {
|
||||
toContentPage(RoutePath.kNovelDownloadSelect, arg: id);
|
||||
}
|
||||
|
||||
/// 打开漫画下载管理
|
||||
/// * [type] 0=下载完成,1=下载中
|
||||
static void toComicDownloadManage(int type) {
|
||||
toContentPage(RoutePath.kComicDownload, arg: type);
|
||||
}
|
||||
|
||||
/// 打开已下载的漫画
|
||||
/// * [info] 已下载的漫画信息
|
||||
static void toComicDownloadDetail(ComicDownloadedItem info) {
|
||||
toContentPage(RoutePath.kComicDownloadDetail, arg: info);
|
||||
}
|
||||
|
||||
/// 打开小说下载管理
|
||||
/// * [type] 0=下载完成,1=下载中
|
||||
static void toNovelDownloadManage(int type) {
|
||||
toContentPage(RoutePath.kNovelDownload, arg: type);
|
||||
}
|
||||
|
||||
/// 打开已下载的小说
|
||||
/// * [info] 已下载的漫画信息
|
||||
static void toNovelDownloadDetail(NovelDownloadedItem info) {
|
||||
toContentPage(RoutePath.kNovelDownloadDetail, arg: info);
|
||||
}
|
||||
|
||||
/// 打开添加/回复评论
|
||||
static void toAddComment({
|
||||
required int objId,
|
||||
required int type,
|
||||
CommentItem? replyItem,
|
||||
}) {
|
||||
toContentPage(RoutePath.kCommentAdd, arg: {
|
||||
"objId": objId,
|
||||
"type": type,
|
||||
"replyItem": replyItem,
|
||||
});
|
||||
}
|
||||
|
||||
/// 打开用户的评论
|
||||
/// * [userId] 用户ID
|
||||
static void toUserComment(int userId) {
|
||||
toContentPage(RoutePath.kUserComment, arg: userId);
|
||||
}
|
||||
|
||||
/// 打开用户中心
|
||||
/// * [userId] 用户ID
|
||||
static void toUserCenter(int userId) {
|
||||
//TODO 跳转至用户中心
|
||||
toUserComment(userId);
|
||||
}
|
||||
|
||||
/// 打开本机收藏
|
||||
static void tolocalFavorite() {
|
||||
toContentPage(RoutePath.kLocalFavorite);
|
||||
}
|
||||
|
||||
static void showBottomSheet(
|
||||
Widget widget, {
|
||||
bool isScrollControlled = false,
|
||||
}) {
|
||||
showModalBottomSheet(
|
||||
context: subNavigatorContext,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(12),
|
||||
topRight: Radius.circular(12),
|
||||
),
|
||||
),
|
||||
isScrollControlled: isScrollControlled,
|
||||
backgroundColor: Get.theme.cardColor,
|
||||
builder: (context) => widget,
|
||||
routeSettings: const RouteSettings(name: "/modalBottomSheet"),
|
||||
);
|
||||
}
|
||||
}
|
||||
281
lib/routes/app_pages.dart
Normal file
281
lib/routes/app_pages.dart
Normal file
@@ -0,0 +1,281 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/author_detail/author_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/category_detail/category_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/detail/comic_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/home/comic_home_controller.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/reader/comic_reader_controller.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/reader/comic_reader_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/search/comic_search_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/select_chapter/comic_select_chapter_page.dart';
|
||||
import 'package:flutter_dmzj/modules/comic/special_detail/special_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/comment/add_comment_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/comment/comment_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/download/comic/comic_download_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/download/comic/comic_downloaded_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/download/novel/novel_download_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/download/novel/novel_downloaded_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/empty_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/test_subroute_page.dart';
|
||||
import 'package:flutter_dmzj/modules/common/webview/webview_page.dart';
|
||||
import 'package:flutter_dmzj/modules/index/index_controller.dart';
|
||||
import 'package:flutter_dmzj/modules/index/index_page.dart';
|
||||
import 'package:flutter_dmzj/modules/news/detail/news_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/category_detail/novel_category_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/detail/novel_detail_page.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/reader/novel_reader_controller.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/reader/novel_reader_page.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/search/novel_search_page.dart';
|
||||
import 'package:flutter_dmzj/modules/novel/select_chapter/novel_select_chapter_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/comment/user_comment_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/history/user_history_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/local_favorite/local_favorite_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/local_history/local_history_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/settings/settings_page.dart';
|
||||
import 'package:flutter_dmzj/modules/user/subscribe/user_subscribe_pgae.dart';
|
||||
import 'package:flutter_dmzj/modules/user/user_home_controller.dart';
|
||||
import 'package:flutter_dmzj/routes/route_path.dart';
|
||||
import 'package:flutter_dmzj/services/comic_download_service.dart';
|
||||
import 'package:flutter_dmzj/services/novel_download_service.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class AppPages {
|
||||
AppPages._();
|
||||
static const kIndex = RoutePath.kIndex;
|
||||
static final routes = [
|
||||
GetPage(
|
||||
name: RoutePath.kIndex,
|
||||
page: () => const IndexPage(),
|
||||
bindings: [
|
||||
BindingsBuilder.put(
|
||||
() => IndexController(),
|
||||
),
|
||||
BindingsBuilder.put(
|
||||
() => ComicHomeController(),
|
||||
),
|
||||
BindingsBuilder.put(
|
||||
() => UserHomeController(),
|
||||
),
|
||||
],
|
||||
),
|
||||
GetPage(
|
||||
name: RoutePath.kComicReader,
|
||||
page: () => const ComicReaderPage(),
|
||||
binding: BindingsBuilder.put(
|
||||
() => ComicReaderController(
|
||||
comicId: Get.arguments["comicId"],
|
||||
comicTitle: Get.arguments["comicTitle"],
|
||||
comicCover: Get.arguments["comicCover"],
|
||||
chapters: Get.arguments["chapters"],
|
||||
chapter: Get.arguments["chapter"],
|
||||
isLongComic: Get.arguments["isLongComic"] ?? false,
|
||||
),
|
||||
),
|
||||
),
|
||||
GetPage(
|
||||
name: RoutePath.kNovelReader,
|
||||
page: () => const NovelReaderPage(),
|
||||
binding: BindingsBuilder.put(
|
||||
() => NovelReaderController(
|
||||
novelId: Get.arguments["novelId"],
|
||||
novelTitle: Get.arguments["novelTitle"],
|
||||
novelCover: Get.arguments["novelCover"],
|
||||
chapters: Get.arguments["chapters"],
|
||||
chapter: Get.arguments["chapter"],
|
||||
),
|
||||
),
|
||||
),
|
||||
];
|
||||
|
||||
/// 定义子路由
|
||||
static Route<dynamic>? generateSubRoute(RouteSettings settings) {
|
||||
switch (settings.name) {
|
||||
case "/":
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => const EmptyPage(),
|
||||
);
|
||||
case RoutePath.kTestSubRoute:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
transition: Transition.native,
|
||||
page: () => const TestSubRoutePage(),
|
||||
);
|
||||
case RoutePath.kNewsDetail:
|
||||
var parameter = settings.arguments as Map;
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NewsDetailPage(
|
||||
title: parameter["title"],
|
||||
newsUrl: parameter["newsUrl"],
|
||||
newsId: parameter["newsId"],
|
||||
),
|
||||
);
|
||||
case RoutePath.kComment:
|
||||
var parameter = settings.arguments as Map;
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => CommentPage(
|
||||
objId: parameter["objId"],
|
||||
type: parameter["type"],
|
||||
),
|
||||
);
|
||||
case RoutePath.kCommentAdd:
|
||||
var parameter = settings.arguments as Map;
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => AddCommentPage(
|
||||
objId: parameter["objId"],
|
||||
type: parameter["type"],
|
||||
replyItem: parameter["replyItem"],
|
||||
),
|
||||
);
|
||||
case RoutePath.kWebView:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => WebViewPage(
|
||||
url: settings.arguments.toString(),
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicCategoryDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => CategoryDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kSpecialDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => SpecialDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicAuthorDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicAuthorDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicSearch:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicSearchPage(
|
||||
keyword: settings.arguments.toString(),
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelSearch:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelSearchPage(
|
||||
keyword: settings.arguments.toString(),
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelCategoryDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelCategoryDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kUserSubscribe:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => UserSubscribePage(
|
||||
type: settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kUserHistory:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => UserHistoryPage(
|
||||
type: settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kLocalHistory:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => LocalHistoryPage(
|
||||
type: settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kSettings:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => SettingsPage(
|
||||
index: settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelDetailPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicDownloadSelect:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicSelectChapterPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicDownload:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicDownloadPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kComicDownloadDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => ComicDownloadedDetailPage(
|
||||
settings.arguments as ComicDownloadedItem,
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelDownloadSelect:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelSelectChapterPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelDownload:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelDownloadPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kNovelDownloadDetail:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => NovelDownloadedDetailPage(
|
||||
settings.arguments as NovelDownloadedItem,
|
||||
),
|
||||
);
|
||||
case RoutePath.kUserComment:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => UserCommentPage(
|
||||
settings.arguments as int,
|
||||
),
|
||||
);
|
||||
case RoutePath.kLocalFavorite:
|
||||
return GetPageRoute(
|
||||
settings: settings,
|
||||
page: () => LocalFavoritePage(),
|
||||
);
|
||||
default:
|
||||
return GetPageRoute(page: () => const EmptyPage());
|
||||
}
|
||||
}
|
||||
}
|
||||
90
lib/routes/route_path.dart
Normal file
90
lib/routes/route_path.dart
Normal file
@@ -0,0 +1,90 @@
|
||||
class RoutePath {
|
||||
/// 首页
|
||||
static const kIndex = "/index";
|
||||
|
||||
/// 空白
|
||||
static const kEmpty = "/empty";
|
||||
|
||||
/// 登录
|
||||
static const kUserLogin = "/user/login";
|
||||
|
||||
static const kTestSubRoute = "/test/sub_route";
|
||||
|
||||
/// WebView
|
||||
static const kWebView = "/other/webview";
|
||||
|
||||
/// 新闻详情
|
||||
static const kNewsDetail = "/news/detail";
|
||||
|
||||
/// 评论
|
||||
static const kComment = "/comment";
|
||||
|
||||
/// 漫画详情
|
||||
static const kComicDetail = "/comic/detail";
|
||||
|
||||
/// 漫画阅读
|
||||
static const kComicReader = "/comic/reader";
|
||||
|
||||
/// 漫画分类详情
|
||||
static const kComicCategoryDetail = "/comic/category/detail";
|
||||
|
||||
/// 专题详情
|
||||
static const kSpecialDetail = "/comic/special/detail";
|
||||
|
||||
/// 漫画作者详情
|
||||
static const kComicAuthorDetail = "/comic/author/detail";
|
||||
|
||||
/// 漫画搜索
|
||||
static const kComicSearch = "/comic/search";
|
||||
|
||||
/// 轻小说搜索
|
||||
static const kNovelSearch = "/novel/search";
|
||||
|
||||
/// 轻小说分类详情
|
||||
static const kNovelCategoryDetail = "/novel/category/detail";
|
||||
|
||||
/// 用户订阅
|
||||
static const kUserSubscribe = "/user/subscribe";
|
||||
|
||||
/// 用户观看记录
|
||||
static const kUserHistory = "/user/history";
|
||||
|
||||
/// 本机观看记录
|
||||
static const kLocalHistory = "/user/local/history";
|
||||
|
||||
/// 设置
|
||||
static const kSettings = "/user/settings";
|
||||
|
||||
/// 小说详情
|
||||
static const kNovelDetail = "/novel/detail";
|
||||
|
||||
/// 小说阅读
|
||||
static const kNovelReader = "/novel/reader";
|
||||
|
||||
/// 漫画下载,选择章节
|
||||
static const kComicDownloadSelect = "/comic/download/chapter";
|
||||
|
||||
/// 小说下载,选择章节
|
||||
static const kNovelDownloadSelect = "/novel/download/chapter";
|
||||
|
||||
/// 漫画下载管理
|
||||
static const kComicDownload = "/download/comic";
|
||||
|
||||
/// 漫画下载详情
|
||||
static const kComicDownloadDetail = "/download/comic/detail";
|
||||
|
||||
/// 小说下载管理
|
||||
static const kNovelDownload = "/download/novel";
|
||||
|
||||
/// 小说下载详情
|
||||
static const kNovelDownloadDetail = "/download/novel/chapter";
|
||||
|
||||
/// 添加/回复评论
|
||||
static const kCommentAdd = "/comment/add";
|
||||
|
||||
/// 用户的评论
|
||||
static const kUserComment = "/user/comment";
|
||||
|
||||
/// 本机收藏
|
||||
static const kLocalFavorite = "/user/local/favorite";
|
||||
}
|
||||
Reference in New Issue
Block a user