[Bug]: share_plus decodes full-resolution images on the main thread when preparing iOS share previews
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- flutter, ios
- Área
- mobile, performance
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Dart
- Estrellas
- 1.9k
- Forks
- 1.3k
- Merge medio
- 8 h 43 min
- PR fusionados (30 d)
- 13
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fluttercommunity/plus_plugins
-
[Bug]: (share_plus) iOS drops the subject when sharing a uriPosiblemente ocupada @kaluli123123 la tomó hace 11 días. Abiertobug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
fluttercommunity/plus_plugins#3994 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Request]: network_info_plus: use ConnectivityManager for getWifiIP and getWifiGatewayIP from Android 7 (N), so ethernet works below Android 12Posiblemente ocupada @redge-munch la tomó hace 10 días. Abiertoenhancement triage
Dificultad 3/5 Medio día Aptitud para principiantes 22/100
fluttercommunity/plus_plugins#3998 ·
Los mantenedores suelen responder en 1 día
-
[package_info_plus]: Use Flutter's compile-time build name/number on web instead of version.jsonPosiblemente ocupada @Ortes la tomó hace 17 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
fluttercommunity/plus_plugins#3989 ·
Los mantenedores suelen responder en 1 día
-
enhancement triage
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
fluttercommunity/plus_plugins#3976 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
fluttercommunity/plus_plugins#3974 · 1 reacción ·
Los mantenedores suelen responder en 1 día
Todos los issues de fluttercommunity/plus_plugins
Issues similares
-
`sendFileEvent` uploads the original image but describes the shrunk one in unencrypted roomsAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
famedly/matrix-dart-sdk#2524 ·
Los mantenedores suelen responder en 1 día
-
Document supported hardwareAbiertoDocumentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Kazakh (kk_KZ) and Georgian (ka_GE) system locales get English instead of the shipped translationsAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
area: docs eco: dart good first issue help wanted lane: free-agent roadmap size: XS type: docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
arminazimi/evergreen#430 ·
Los mantenedores suelen responder en 1 día
-
area: rust-core bug priority: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día