feat: show real neighboring pages during back and forward swipes
This commit is contained in:
parent
4e07c9a305
commit
c104c2026b
7 changed files with 283 additions and 71 deletions
|
|
@ -100,8 +100,10 @@ class _ReaderScreenState extends State<ReaderScreen> {
|
|||
return SwipeNavigator(
|
||||
canGoBack: browser.canGoBack,
|
||||
canGoForward: browser.canGoForward,
|
||||
backTitle: browser.backTitle.value,
|
||||
forwardTitle: browser.forwardTitle.value,
|
||||
backView: _neighborView(browser.backPage.value),
|
||||
forwardView: _neighborView(browser.forwardPage.value),
|
||||
backTitle: browser.backPage.value?.title,
|
||||
forwardTitle: browser.forwardPage.value?.title,
|
||||
background: peekBackground,
|
||||
onBack: browser.back,
|
||||
onForward: browser.forward,
|
||||
|
|
@ -179,6 +181,31 @@ class _ReaderScreenState extends State<ReaderScreen> {
|
|||
});
|
||||
}
|
||||
|
||||
/// Renders a neighboring page for the swipe peek, non-interactive: it is a
|
||||
/// look ahead, and committing the navigation brings the real thing.
|
||||
Widget? _neighborView(MewsPage? page) {
|
||||
if (page == null) return null;
|
||||
final deps = AppScope.of(context).deps;
|
||||
final settings = deps.settings;
|
||||
final palette = paletteFor(
|
||||
pageVariant: page.variant,
|
||||
readerVariant: settings.variant.value,
|
||||
dark: Theme.of(context).brightness == Brightness.dark,
|
||||
);
|
||||
return ColoredBox(
|
||||
color: palette.background,
|
||||
child: MewsPageView(
|
||||
page: page,
|
||||
palette: palette,
|
||||
fontFamily: settings.font.value,
|
||||
fontScale: settings.fontScale.value,
|
||||
visitedUrls: deps.browser.visitedUrls.value,
|
||||
onLinkTap: (_) {},
|
||||
onFormSubmit: (_, _) {},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _emptyPage(BuildContext context) {
|
||||
// No page yet: the address bar is the whole UI.
|
||||
return const SizedBox.expand();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue