refactor favicon widget
This commit is contained in:
@@ -59,8 +59,8 @@ class SiteSearch extends HookConsumerWidget {
|
||||
itemId: (bang) => bang.trigger,
|
||||
itemAvatar: (bang) => BangIcon(bang, iconSize: 20),
|
||||
itemLabel: (bang) => Text(bang.websiteName),
|
||||
available: availableBangs,
|
||||
selected: selectedBang,
|
||||
availableItems: availableBangs,
|
||||
selectedItem: selectedBang,
|
||||
onSelected: (bang) {
|
||||
ref
|
||||
.read(
|
||||
|
||||
@@ -44,7 +44,8 @@ class AppBarTitle extends HookWidget {
|
||||
child: Row(
|
||||
children: [
|
||||
FaviconImage(
|
||||
webPageInfo: page,
|
||||
favicon: page.favicon,
|
||||
url: page.url,
|
||||
),
|
||||
const SizedBox(
|
||||
width: 8,
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:lensai/domain/entities/web_page_info.dart';
|
||||
import 'package:lensai/extensions/web_uri_favicon.dart';
|
||||
|
||||
class FaviconImage extends StatelessWidget {
|
||||
final double size;
|
||||
final Icon _iconPlaceholder;
|
||||
|
||||
final WebPageInfo webPageInfo;
|
||||
final Favicon? favicon;
|
||||
final Uri url;
|
||||
|
||||
FaviconImage({
|
||||
required this.webPageInfo,
|
||||
required this.url,
|
||||
required this.favicon,
|
||||
this.size = 16,
|
||||
super.key,
|
||||
}) : _iconPlaceholder = Icon(
|
||||
@@ -20,15 +22,15 @@ class FaviconImage extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (webPageInfo.favicon != null) {
|
||||
if (favicon != null) {
|
||||
return FadeInImage(
|
||||
placeholder: NetworkImage(
|
||||
webPageInfo.url.genericFavicon().toString(),
|
||||
url.genericFavicon().toString(),
|
||||
),
|
||||
image: NetworkImage(webPageInfo.favicon!.url.toString()),
|
||||
image: NetworkImage(favicon!.url.toString()),
|
||||
placeholderErrorBuilder: (_, __, ___) => _iconPlaceholder,
|
||||
imageErrorBuilder: (_, __, ___) => Image.network(
|
||||
webPageInfo.url.genericFavicon().toString(),
|
||||
url.genericFavicon().toString(),
|
||||
errorBuilder: (_, __, ___) => _iconPlaceholder,
|
||||
height: size,
|
||||
width: size,
|
||||
@@ -38,7 +40,7 @@ class FaviconImage extends StatelessWidget {
|
||||
);
|
||||
} else {
|
||||
return Image.network(
|
||||
webPageInfo.url.genericFavicon().toString(),
|
||||
url.genericFavicon().toString(),
|
||||
errorBuilder: (_, __, ___) => _iconPlaceholder,
|
||||
height: size,
|
||||
width: size,
|
||||
|
||||
@@ -99,7 +99,8 @@ class WebPageDialog extends HookConsumerWidget {
|
||||
),
|
||||
title: ListTile(
|
||||
leading: FaviconImage(
|
||||
webPageInfo: page,
|
||||
favicon: page.favicon,
|
||||
url: page.url,
|
||||
size: 24,
|
||||
),
|
||||
contentPadding: EdgeInsets.zero,
|
||||
|
||||
@@ -20,7 +20,8 @@ class WebsiteTitleTile extends HookConsumerWidget {
|
||||
data: (info) {
|
||||
return ListTile(
|
||||
leading: FaviconImage(
|
||||
webPageInfo: info,
|
||||
favicon: info.favicon,
|
||||
url: info.url,
|
||||
size: 24,
|
||||
),
|
||||
contentPadding: EdgeInsets.zero,
|
||||
|
||||
Reference in New Issue
Block a user