Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
book-app
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
book-app
Commits
0a97ea16
提交
0a97ea16
authored
3月 19, 2024
作者:
yueweilu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
标识当前阅读的位置
上级
20e12c38
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
70 行增加
和
68 行删除
+70
-68
controller.dart
lib/pages/book_detail/controller.dart
+14
-42
controller.dart
lib/pages/read_web/controller.dart
+52
-24
view.dart
lib/pages/read_web/view.dart
+4
-2
没有找到文件。
lib/pages/book_detail/controller.dart
浏览文件 @
0a97ea16
...
@@ -50,32 +50,7 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
...
@@ -50,32 +50,7 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
}
}
}
}
/// 设置当前读的章节id
void
writeCurrentReadChapterIdToData
(
List
<
ChapterModel
>
data
)
{
void
setCurrentReadChapterId
(){
for
(
ChapterModel
chapterModel
in
chapters
){
chapterModel
.
currentRead
=
false
;
if
(
chapterModel
.
id
==
currentChapterId
){
chapterModel
.
currentRead
=
true
;
chapterModel
.
selected
=
true
;
}
writeCurrentReadChapterIdToData
(
chapterModel
);
}
}
void
writeCurrentReadChapterIdToData
(
ChapterModel
chapterModel
){
for
(
ChapterModel
cModel
in
chapterModel
.
children
!){
cModel
.
currentRead
=
false
;
if
(
cModel
.
id
==
currentChapterId
){
cModel
.
currentRead
=
true
;
cModel
.
selected
=
true
;
chapterModel
.
selected
=
true
;
}
writeCurrentReadChapterIdToData
(
cModel
);
}
}
void
testWriteCurrentReadChapterIdToData
(
List
<
ChapterModel
>
data
)
{
for
(
ChapterModel
cModel
in
data
){
for
(
ChapterModel
cModel
in
data
){
cModel
.
currentRead
=
false
;
cModel
.
currentRead
=
false
;
if
(
cModel
.
id
==
currentChapterId
){
if
(
cModel
.
id
==
currentChapterId
){
...
@@ -83,12 +58,12 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
...
@@ -83,12 +58,12 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
cModel
.
selected
=
true
;
cModel
.
selected
=
true
;
}
}
else
{
else
{
testW
riteCurrentReadChapterIdToData
(
cModel
.
children
!);
w
riteCurrentReadChapterIdToData
(
cModel
.
children
!);
}
}
}
}
ChapterModel
?
tModel
=
findChapterById
(
chapters
,
currentChapterId
);
ChapterModel
?
tModel
=
findChapterById
(
chapters
,
currentChapterId
);
if
(
tModel
=
=
null
){
if
(
tModel
!
=
null
){
updateParentsStatus
(
chapters
,
tModel
!);
updateParentsStatus
(
chapters
,
tModel
!);
}
}
...
@@ -108,23 +83,21 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
...
@@ -108,23 +83,21 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
}
}
void
updateParentsStatus
(
List
<
ChapterModel
>
data
,
ChapterModel
model
)
{
void
updateParentsStatus
(
List
<
ChapterModel
>
data
,
ChapterModel
model
)
{
ChapterModel
?
parentNode
=
findParent
Node
(
data
,
model
);
ChapterModel
?
parentNode
=
findParent
Chapter
(
data
,
model
);
while
(
parentNode
!=
null
)
{
while
(
parentNode
!=
null
)
{
parentNode
.
selected
=
true
;
parentNode
.
selected
=
true
;
parentNode
=
findParent
Node
(
data
,
parentNode
);
parentNode
=
findParent
Chapter
(
data
,
parentNode
);
}
}
}
}
ChapterModel
?
findParentNode
(
List
<
ChapterModel
>
nodes
,
ChapterModel
node
)
{
ChapterModel
?
findParentChapter
(
List
<
ChapterModel
>
data
,
ChapterModel
model
){
for
(
var
n
in
nodes
)
{
for
(
ChapterModel
tModel
in
data
){
for
(
var
child
in
n
.
children
!)
{
if
(
tModel
.
id
==
model
.
pid
){
if
(
child
==
node
)
{
return
tModel
;
return
n
;
}
}
ChapterModel
?
cModel
=
findParentChapter
(
tModel
.
children
!,
model
);
var
parent
=
findParentNode
(
child
.
children
!,
node
);
if
(
cModel
!=
null
)
{
if
(
parent
!=
null
)
{
return
cModel
;
return
parent
;
}
}
}
}
}
return
null
;
return
null
;
...
@@ -151,8 +124,7 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
...
@@ -151,8 +124,7 @@ class BookDetailController extends GetxController with GetSingleTickerProviderSt
writeData
(
chapters
,
result
);
writeData
(
chapters
,
result
);
chapters
=
result
;
chapters
=
result
;
setCurrentReadChapterId
();
writeCurrentReadChapterIdToData
(
chapters
);
// testWriteCurrentReadChapterIdToData(chapters)
update
();
update
();
}
}
...
...
lib/pages/read_web/controller.dart
浏览文件 @
0a97ea16
...
@@ -157,13 +157,13 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
...
@@ -157,13 +157,13 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
update
();
update
();
}
}
// 设置 chapterId 和 chapterName
//
//
设置 chapterId 和 chapterName
void
setChapterInfo
({
required
String
id
,
required
String
name
}){
//
void setChapterInfo({required String id,required String name}){
chapterId
=
id
;
//
chapterId = id;
chapterName
=
name
;
//
chapterName = name;
setCurrentReadChapterId
(
);
// writeCurrentReadChapterIdToData(chapters
);
update
();
//
update();
}
//
}
void
setShow
(
bool
value
)
{
void
setShow
(
bool
value
)
{
_show
=
!
value
;
_show
=
!
value
;
update
();
update
();
...
@@ -181,6 +181,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
...
@@ -181,6 +181,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
void
selectChapter
(
ChapterModel
model
)
{
void
selectChapter
(
ChapterModel
model
)
{
chapterName
=
model
.
name
??
''
;
chapterName
=
model
.
name
??
''
;
chapterId
=
model
.
id
.
toString
();
chapterId
=
model
.
id
.
toString
();
writeCurrentReadChapterIdToData
(
chapters
);
update
();
update
();
}
}
...
@@ -855,35 +856,62 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
...
@@ -855,35 +856,62 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
/// 获取目录信息
/// 获取目录信息
void
_getChapters
()
async
{
void
_getChapters
()
async
{
chapters
=
await
LibraryAPI
.
chapters
(
bookId:
bookId
);
chapters
=
await
LibraryAPI
.
chapters
(
bookId:
bookId
);
setCurrentReadChapterId
(
);
writeCurrentReadChapterIdToData
(
chapters
);
update
();
update
();
}
}
/// 设置当前读的章节id
void
writeCurrentReadChapterIdToData
(
List
<
ChapterModel
>
data
)
{
void
setCurrentReadChapterId
(){
for
(
ChapterModel
cModel
in
data
){
for
(
ChapterModel
chapterModel
in
chapters
){
cModel
.
currentRead
=
false
;
chapterModel
.
currentRead
=
false
;
if
(
cModel
.
id
==
int
.
parse
(
chapterId
)){
if
(
chapterModel
.
id
==
int
.
parse
(
chapterId
)){
cModel
.
currentRead
=
true
;
chapterModel
.
currentRead
=
true
;
cModel
.
selected
=
true
;
chapterModel
.
selected
=
true
;
}
else
{
writeCurrentReadChapterIdToData
(
cModel
.
children
!);
}
}
writeCurrentReadChapterIdToData
(
chapterModel
);
}
ChapterModel
?
tModel
=
findChapterById
(
chapters
,
int
.
parse
(
chapterId
));
if
(
tModel
!=
null
){
updateParentsStatus
(
chapters
,
tModel
!);
}
}
}
}
void
writeCurrentReadChapterIdToData
(
ChapterModel
chapterModel
){
ChapterModel
?
findChapterById
(
List
<
ChapterModel
>
data
,
num
id
){
for
(
ChapterModel
cModel
in
chapterModel
.
children
!){
for
(
ChapterModel
cModel
in
data
){
cModel
.
currentRead
=
false
;
if
(
cModel
.
id
==
id
){
if
(
cModel
.
id
==
int
.
parse
(
chapterId
)){
return
cModel
;
cModel
.
currentRead
=
true
;
}
cModel
.
selected
=
true
;
ChapterModel
?
tModel
=
findChapterById
(
cModel
.
children
!,
id
);
chapterModel
.
selected
=
true
;
if
(
tModel
!=
null
){
return
tModel
;
}
}
writeCurrentReadChapterIdToData
(
cModel
);
}
}
return
null
;
}
}
void
updateParentsStatus
(
List
<
ChapterModel
>
data
,
ChapterModel
model
)
{
ChapterModel
?
parentNode
=
findParentChapter
(
data
,
model
);
while
(
parentNode
!=
null
)
{
parentNode
.
selected
=
true
;
parentNode
=
findParentChapter
(
data
,
parentNode
);
}
}
ChapterModel
?
findParentChapter
(
List
<
ChapterModel
>
data
,
ChapterModel
model
){
for
(
ChapterModel
tModel
in
data
){
if
(
tModel
.
id
==
model
.
pid
){
return
tModel
;
}
ChapterModel
?
cModel
=
findParentChapter
(
tModel
.
children
!,
model
);
if
(
cModel
!=
null
)
{
return
cModel
;
}
}
return
null
;
}
/// 添加阅读时长
/// 添加阅读时长
void
_addReadTime
({
required
type
})
async
{
void
_addReadTime
({
required
type
})
async
{
...
...
lib/pages/read_web/view.dart
浏览文件 @
0a97ea16
...
@@ -200,7 +200,9 @@ class _ReadPageState extends State<ReadPage> {
...
@@ -200,7 +200,9 @@ class _ReadPageState extends State<ReadPage> {
controller
.
addJavaScriptHandler
(
handlerName:
'loadChapterCallBack'
,
callback:
(
args
){
controller
.
addJavaScriptHandler
(
handlerName:
'loadChapterCallBack'
,
callback:
(
args
){
String
chapterId
=
args
.
first
[
0
].
toString
();
String
chapterId
=
args
.
first
[
0
].
toString
();
String
chapterName
=
args
.
first
[
1
].
toString
();
String
chapterName
=
args
.
first
[
1
].
toString
();
readController
.
setChapterInfo
(
id:
chapterId
,
name:
chapterName
??
''
);
ChapterModel
chapterModel
=
ChapterModel
(
id:
int
.
parse
(
chapterId
),
name:
chapterName
);
// readController.setChapterInfo(id: chapterId, name: chapterName ?? '');
readController
.
selectChapter
(
chapterModel
);
Console
.
log
(
'监听 上一节 下一节------------------------------------------------
$args
'
);
Console
.
log
(
'监听 上一节 下一节------------------------------------------------
$args
'
);
});
});
...
@@ -420,7 +422,7 @@ class _ReadPageState extends State<ReadPage> {
...
@@ -420,7 +422,7 @@ class _ReadPageState extends State<ReadPage> {
controller
.
chooseTool
(
model
);
controller
.
chooseTool
(
model
);
// 选择了新的章节 刷新 webview
// 选择了新的章节 刷新 webview
controller
.
webViewController
.
reload
();
controller
.
webViewController
.
reload
();
controller
.
setCurrentReadChapterId
();
//
controller.setCurrentReadChapterId();
},
},
);
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论