我正在使用 PDF 查看器,我試圖將用戶閱讀到共享首選項的最后一頁存盤為 Book_Title id (tid)。當用戶繼續閱讀時,他會根據每本書重定向到他之前離開的地方。
我面臨的問題是共享首選項沒有保存到每個 Book_title id。它將最后一頁保存到所有書籍中
setInt( Book_title ID , setPage )
var book;
int bookPage = 1;
int setPage = 1;
@override
void initState() {
book = '${widget.tid}';
_pdfViewerController = PdfViewerController();
getPref();
super.initState();
}
getPref() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt('${book}', setPage);
bookPage = prefs.getInt('${book}')!;
print(book);
}
完整代碼
class libraryPDF extends StatefulWidget {
final String? sid;
final String? tid;
final String? page;
const libraryPDF({Key? key, this.sid, this.page, this.tid}) : super(key: key);
@override
State<libraryPDF> createState() => _libraryPDFState();
}
var book;
int bookPage = 1;
int setPage = 1;
class _libraryPDFState extends State<libraryPDF> {
late PdfViewerController _pdfViewerController;
final GlobalKey<SfPdfViewerState> _pdfViewerStateKey = GlobalKey();
@override
void initState() {
book = '${widget.tid}';
_pdfViewerController = PdfViewerController();
getPref();
super.initState();
}
getPref() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setInt('${book}', setPage);
bookPage = await prefs.getInt('${book}')!;
print(book);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
elevation: 0,
title: const Text("CanadianHS"),
backgroundColor: Colors.blue[900],
actions: <Widget>[
IconButton(
onPressed: () {
_pdfViewerStateKey.currentState!.openBookmarkView();
},
icon: Icon(
Icons.bookmark,
color: Colors.white,
)),
IconButton(
icon: Icon(
Icons.keyboard_arrow_left,
color: Colors.white,
),
onPressed: () {
_pdfViewerController.previousPage();
},
),
IconButton(
icon: Icon(
Icons.keyboard_arrow_right,
color: Colors.white,
),
onPressed: () {
_pdfViewerController.nextPage();
},
)
],
),
body: SfPdfViewer.network(
'https://url/${widget.sid}',
controller: _pdfViewerController,
onDocumentLoaded: (PdfDocumentLoadedDetails details) {
_pdfViewerController.jumpToPage(bookPage);
print(details.document.pages.count);
},
key: _pdfViewerStateKey,
onPageChanged: (PdfPageChangedDetails details) {
setPage = details.newPageNumber;
},
pageLayoutMode: PdfPageLayoutMode.single),
);
}
}
uj5u.com熱心網友回復:
好吧,在getPrefs你閱讀當前書的頁面之前,你設定它。您不想在名為get Prefs的方法中設定首選項。
只需prefs.setInt('${book}', setPage);從您的getPrefs方法中洗掉該行。那里還有很多其他的錯誤,但這應該能讓你繼續前進。
我建議打開并聽你的linter。它會發現很多錯誤,并為您提供有關如何改進代碼的良好提示。
uj5u.com熱心網友回復:
您可以通過添加帶有前綴鍵的任何動態值來嘗試此操作。
如,
prefs.setInt("pageNo${bookId}", value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/483097.html
