[Bug]: share_plus decodes full-resolution images on the main thread when preparing iOS share previews
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- flutter, ios
- Lĩnh vực
- mobile, performance
Hướng nghiên cứu
Start with the iOS side of share_plus and search for every UIImage imageWithContentsOfFile: call, including the placeholder, thumbnail and link-metadata callbacks. Then read the 120 × 120 drawing in the metadata callback that PR #3320 added. Done means preview images are produced without fully decoding and drawing the original on the calling thread, which you can check by sharing a large photo on an iOS device and watching for main-thread stalls.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Plugin: share_plus 13.3.1
Current stable releases: Flutter 3.47.7 and iOS 27.0.1. These are current-release references; the original report’s exact OS and Flutter versions haven’t been confirmed.
Sharing a high-resolution photo can stall the app while the share sheet prepares its preview. We encountered this with a 48 MP image; the hang trace pointed to synchronous image drawing in the share metadata callback.
The placeholder, thumbnail, and link-metadata callbacks load the original image using UIImage imageWithContentsOfFile:. The metadata callback then draws it into a 120 × 120 context. This limits the resulting preview size, but still requires decoding and drawing the full-resolution source on the calling thread.
PR #3320, which addressed #3322, added that resize. The same implementation remains in 13.3.1 and current main.
Proposed solution
One possible approach is to generate small previews with ImageIO downsampling on a background queue. This could avoid decoding and resizing the full-resolution image inside UIKit’s preview callbacks.
- Ngôn ngữ chính
- Dart
- Star
- 1.9k
- Fork
- 1.3k
- Merge trung bình
- 8 giờ 43 phút
- Pull request đã merge (30 ngày)
- 13
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của fluttercommunity/plus_plugins
-
[Bug]: (share_plus) iOS drops the subject when sharing a uriCó thể đã có người làm @kaluli123123 đã nhận 11 ngày trước. Đang mởbug triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
fluttercommunity/plus_plugins#3994 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Request]: network_info_plus: use ConnectivityManager for getWifiIP and getWifiGatewayIP from Android 7 (N), so ethernet works below Android 12Có thể đã có người làm @redge-munch đã nhận 9 ngày trước. Đang mởenhancement triage
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 22/100
fluttercommunity/plus_plugins#3998 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[package_info_plus]: Use Flutter's compile-time build name/number on web instead of version.jsonCó thể đã có người làm @Ortes đã nhận 16 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 25/100
fluttercommunity/plus_plugins#3989 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement triage
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
fluttercommunity/plus_plugins#3976 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
fluttercommunity/plus_plugins#3974 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của fluttercommunity/plus_plugins
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: The daily reminder keeps its old language after the app language changesCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbacklog:low bug localization
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
simonoppowa/OpenNutriTracker#1366 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
waiting for response
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 72/100
flutter/flutter#194381 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
newrelic/newrelic-flutter-agent#243 · 3 bình luận ·
-
backlog documentation good first issue priority: medium
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 78/100