[Bug]: share_plus decodes full-resolution images on the main thread when preparing iOS share previews
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- flutter, ios
- 領域
- mobile, performance
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Dart
- スター
- 1.9k
- フォーク
- 1.3k
- 平均マージ
- 8時間 43分
- マージ済み PR(30日)
- 13
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
fluttercommunity/plus_plugins のほかの issue
-
[Bug]: (share_plus) iOS drops the subject when sharing a uri対応中かも @kaluli123123 が 12 日前に担当しました。 オープンbug triage
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
fluttercommunity/plus_plugins#3994 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Request]: network_info_plus: use ConnectivityManager for getWifiIP and getWifiGatewayIP from Android 7 (N), so ethernet works below Android 12対応中かも @redge-munch が 10 日前に担当しました。 オープンenhancement triage
難易度 3/5 半日 初心者へのやさしさ 22/100
fluttercommunity/plus_plugins#3998 ·
メンテナーはふだん 1 日以内に返信
-
[package_info_plus]: Use Flutter's compile-time build name/number on web instead of version.json対応中かも @Ortes が 17 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
fluttercommunity/plus_plugins#3989 ·
メンテナーはふだん 1 日以内に返信
-
enhancement triage
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
fluttercommunity/plus_plugins#3976 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
fluttercommunity/plus_plugins#3974 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
fluttercommunity/plus_plugins の issue をすべて見る
似ている issue
-
c: proposal p: go_router package team-ecosystem
難易度 2/5 1〜3時間 初心者へのやさしさ 60/100
flutter/flutter#194542 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
famedly/matrix-dart-sdk#2524 ·
メンテナーはふだん 1 日以内に返信
-
Documentation
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
Kazakh (kk_KZ) and Georgian (ka_GE) system locales get English instead of the shipped translationsオープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
area: docs eco: dart good first issue help wanted lane: free-agent roadmap size: XS type: docs
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
arminazimi/evergreen#430 ·
メンテナーはふだん 1 日以内に返信