feat: color a site from its address, and offer a failed web page to the system browser
This commit is contained in:
parent
56db479df0
commit
9d9f09ebc7
24 changed files with 597 additions and 25 deletions
|
|
@ -166,9 +166,6 @@ class _ThemedApp extends StatelessWidget {
|
|||
// Read so the whole app rebuilds when the reader changes language.
|
||||
settings.language.value;
|
||||
final page = deps.browser.currentPage.value;
|
||||
final variant = settings.variant.value == 'site'
|
||||
? (page?.variant ?? MewsVariant.plain)
|
||||
: pageVariantFromName(settings.variant.value);
|
||||
|
||||
// Flutter's own widgets and the text direction follow the same
|
||||
// language, so a right-to-left interface mirrors without us asking.
|
||||
|
|
@ -188,17 +185,25 @@ class _ThemedApp extends StatelessWidget {
|
|||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
themeMode: mode,
|
||||
theme: _themeFor(
|
||||
paletteFor(pageVariant: variant, readerVariant: 'site', dark: false),
|
||||
font),
|
||||
darkTheme: _themeFor(
|
||||
paletteFor(pageVariant: variant, readerVariant: 'site', dark: true),
|
||||
font),
|
||||
theme: _themeFor(_chromePalette(settings, page, dark: false), font),
|
||||
darkTheme: _themeFor(_chromePalette(settings, page, dark: true), font),
|
||||
home: const ReaderScreen(),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/// The interface wears the current page's palette, so the chrome around a
|
||||
/// page matches it.
|
||||
MewsPalette _chromePalette(ReaderSettingsController settings, MewsPage? page,
|
||||
{required bool dark}) {
|
||||
return paletteFor(
|
||||
pageVariant: page?.variant ?? MewsVariant.plain,
|
||||
readerVariant: settings.variant.value,
|
||||
dark: dark,
|
||||
url: page?.url,
|
||||
);
|
||||
}
|
||||
|
||||
ThemeData _themeFor(MewsPalette palette, String fontFamily) {
|
||||
final dark = palette.background.computeLuminance() < 0.5;
|
||||
final scheme = ColorScheme(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue