Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Bug]: share_plus decodes full-resolution images on the main thread when preparing iOS share previews

オープン
#4,001 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@ananya-kaul がすでに取り組んでいます。

2026年10月14日 から。

  • #4003 @ananya-kaul による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
flutter, ios

調査の方向性

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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

fluttercommunity/plus_plugins のほかの issue

fluttercommunity/plus_plugins の issue をすべて見る

似ている issue

Dart の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。