sometime shortcut image handle error

This commit is contained in:
DASHU
2025-09-02 08:06:53 +08:00
parent 5daf067c1b
commit 8d37eebb80

View File

@@ -1,4 +1,5 @@
import 'dart:io';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
@@ -132,6 +133,11 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
final _flutterPinnedShortcutPlugin = FlutterPinnedShortcut();
Future<void> doAddPinnedShortcut(Bookmark bookmark) async {
if (StringUtil.isBlank(bookmark.title) ||
StringUtil.isBlank(bookmark.url)) {
return;
}
File? file;
if (StringUtil.isNotBlank(bookmark.favicon)) {
// use favicon as icon
@@ -143,6 +149,9 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
return;
}
var filepath = file.path;
try {
final originalBytes = await file.readAsBytes();
final originalImage = img.decodeImage(originalBytes);
if (originalImage == null) {
@@ -150,7 +159,7 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
return;
}
final targetSize = 256;
final targetSize = 512;
final newImage = img.Image(width: targetSize, height: targetSize);
img.fill(newImage, color: img.ColorRgb8(240, 240, 240));
@@ -158,8 +167,8 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
(originalImage.width > originalImage.height
? originalImage.width
: originalImage.height);
final int newWidth = (originalImage.width * scale).round();
final int newHeight = (originalImage.height * scale).round();
final int newWidth = max((originalImage.width * scale).round(), 1);
final int newHeight = max((originalImage.height * scale).round(), 1);
final resizedImage =
img.copyResize(originalImage, width: newWidth, height: newHeight);
@@ -174,9 +183,10 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
'${tempDir.path}/icon_${DateTime.now().millisecondsSinceEpoch}.png');
await resizedFile.writeAsBytes(img.encodePng(newImage));
if (StringUtil.isBlank(bookmark.title) ||
StringUtil.isBlank(bookmark.url)) {
return;
filepath = resizedFile.path;
} catch (e) {
print("create pinned shortcut failed!");
print(e);
}
_flutterPinnedShortcutPlugin.createPinnedShortcut(
@@ -184,7 +194,7 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
label: bookmark.title!,
action: bookmark.url!,
iconAssetName: "assets/logo_android.png",
iconUri: Uri.file(resizedFile.path).toString());
iconUri: Uri.file(filepath).toString());
}
Future<void> doEdit(Bookmark bookmark) async {