Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
book-app
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
book-app
Commits
b51bb84c
提交
b51bb84c
authored
2月 03, 2024
作者:
yueweilu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
初步下载文件
上级
f96d7ba5
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
67 行增加
和
17 行删除
+67
-17
library.dart
lib/apis/library.dart
+13
-4
controller.dart
lib/pages/read_web/controller.dart
+20
-0
index.dart
lib/pages/read_web/index.dart
+1
-0
view.dart
lib/pages/read_web/view.dart
+1
-1
http.dart
lib/services/http.dart
+32
-12
没有找到文件。
lib/apis/library.dart
浏览文件 @
b51bb84c
...
...
@@ -229,8 +229,8 @@ abstract class LibraryAPI {
return
false
;
}
/// 11、
离线下载
static
Future
<
BookDownloadModel
>
bookDownload
({
/// 11、
获取离线书籍下载地址 和 秘钥串
static
Future
<
BookDownloadModel
>
getbookDownloadParam
({
required
String
bookId
,
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
...
...
@@ -243,7 +243,16 @@ abstract class LibraryAPI {
return
BookDownloadModel
.
fromJson
(
result
.
data
);
}
/// 12、离线重连 上传笔记、高亮、划线
/// 12、根据书籍地址下载书籍
static
Future
<
void
>
downBookByUrl
({
required
String
url
,
required
String
savePath
,
ProgressCallback
?
onReceiveProgress
,
})
async
{
await
HttpService
.
to
.
download
(
url
,
savePath:
savePath
,
onReceiveProgress:
onReceiveProgress
);
}
/// 13、离线重连 上传笔记、高亮、划线
static
Future
<
bool
>
uploadContent
({
required
String
bookId
,
required
String
readTypes
...
...
@@ -260,7 +269,7 @@ abstract class LibraryAPI {
return
false
;
}
/// 1
3
、添加笔记、高亮、划线的内容
/// 1
4
、添加笔记、高亮、划线的内容
static
Future
<
bool
>
addNote
({
required
String
bookId
,
required
String
chapterId
,
...
...
lib/pages/read_web/controller.dart
浏览文件 @
b51bb84c
...
...
@@ -304,6 +304,26 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
void
_addReadTime
({
required
type
})
async
{
final
result
=
await
LibraryAPI
.
addReadTime
(
bookId:
bookId
,
readTypes:
type
);
}
/// 获取离线文件路径
void
getBookDown
()
async
{
final
result
=
await
LibraryAPI
.
getbookDownloadParam
(
bookId:
bookId
);
Console
.
log
(
'----------_getBookDown------------------
${result.download}
'
);
final
String
savePath
=
await
_getDocumentsDirectory
();
LibraryAPI
.
downBookByUrl
(
url:
result
.
download
!,
savePath:
'
$savePath$bookId
.zip'
,
onReceiveProgress:
(
int
received
,
int
total
){
if
(
total
!=-
1
){
double
progress
=
(
received
/
total
)
*
100
;
Console
.
log
(
'Download progress:
$progress
%'
);
}
});
}
//获取存储目录
Future
<
String
>
_getDocumentsDirectory
()
async
{
final
directory
=
await
getApplicationDocumentsDirectory
();
return
directory
.
path
;
}
///------------------------------------------ app 生命周期--------------------------------------------------------
...
...
lib/pages/read_web/index.dart
浏览文件 @
b51bb84c
...
...
@@ -12,6 +12,7 @@ import 'package:flutter_book/utils/index.dart';
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:get/get.dart'
;
import
'package:go_router/go_router.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'../../apis/index.dart'
;
import
'../../models/index.dart'
;
...
...
lib/pages/read_web/view.dart
浏览文件 @
b51bb84c
...
...
@@ -32,7 +32,7 @@ class _ReadPageState extends State<ReadPage> {
actions:
[
GestureDetector
(
onTap:
()
{
readController
.
getBookDown
();
},
child:
Text
(
'离线阅读'
,
...
...
lib/services/http.dart
浏览文件 @
b51bb84c
...
...
@@ -146,6 +146,7 @@ class HttpService extends GetxService {
try
{
final
requestOptions
=
options
??
Options
();
requestOptions
.
headers
=
_getHeaders
(
excludeToken:
excludeToken
,
url:
url
);
requestOptions
.
responseType
=
ResponseType
.
bytes
;
await
_dio
.
download
(
url
,
savePath
,
...
...
@@ -153,9 +154,10 @@ class HttpService extends GetxService {
cancelToken:
cancelToken
,
onReceiveProgress:
onReceiveProgress
);
Console
.
log
(
'Download completed:
$savePath
'
);
}
catch
(
e
){
Console
.
log
(
e
);
Console
.
log
(
'Error during download:
$e
'
);
rethrow
;
}
}
...
...
@@ -167,18 +169,36 @@ class HttpService extends GetxService {
class
_RequestInterceptor
extends
Interceptor
{
@override
void
onResponse
(
Response
response
,
ResponseInterceptorHandler
handler
)
async
{
if
(
response
.
data
[
'code'
]
!=
200
)
{
handler
.
reject
(
DioException
(
requestOptions:
response
.
requestOptions
,
response:
response
,
type:
DioExceptionType
.
badResponse
,
),
true
,
);
}
else
{
super
.
onResponse
(
response
,
handler
);
final
responseData
=
response
.
data
;
if
(
responseData
is
Map
&&
responseData
.
containsKey
(
'code'
))
{
final
code
=
responseData
[
'code'
];
if
(
code
!=
200
)
{
handler
.
reject
(
DioException
(
requestOptions:
response
.
requestOptions
,
response:
response
,
type:
DioExceptionType
.
badResponse
,
),
true
,
);
return
;
}
}
else
if
(
response
.
requestOptions
.
responseType
==
ResponseType
.
bytes
)
{
}
super
.
onResponse
(
response
,
handler
);
// if (response.data['code'] != 200) {
// handler.reject(
// DioException(
// requestOptions: response.requestOptions,
// response: response,
// type: DioExceptionType.badResponse,
// ),
// true,
// );
// }else {
// super.onResponse(response, handler);
// }
}
@override
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论