[core] Decouple platform_interface from Flutter for pure-Dart web
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- dart
- Ambito
- api, build-system
Direzione di ricerca
Inizia leggendo firebase_core_platform_interface/pubspec.yaml e l’implementazione di MethodChannelFirebase, quindi confronta i pacchetti fratelli *_platform_interface e web descritti nell’issue. Esamina Option A rispetto a Option B e il contratto FirebaseException/PlatformException con i maintainer. Il lavoro è completato quando è stata selezionata una direzione e i criteri di accettazione sono stati risolti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context & Problem
Recent cleanups (#18604, #18624) removed package:flutter/foundation.dart, package:flutter/material.dart, and package:flutter_web_plugins imports from *_platform_interface data models and firebase_core_web. Because FlutterFire web implementations (firebase_core_web, firebase_auth_web, cloud_firestore_web) are built on dart:js_interop and package:web, they can compile to JS and Wasm GC without pulling in dart:ui or the Flutter engine.
However, non-Flutter Dart web frameworks (e.g. Jaspr) and pure-Dart environments cannot resolve these packages using standalone dart pub get because firebase_core_platform_interface (and sibling *_platform_interface packages) still declare flutter: sdk: flutter in pubspec.yaml.
The sole remaining reason *_platform_interface depends on flutter: sdk: flutter is that it bundles the default MethodChannel* implementation (package:flutter/services.dart). Meanwhile, package:plugin_platform_interface itself is already 100% pure Dart.
Proposed Options
We would like feedback from the maintainers on two architectural options to remove the flutter: sdk: flutter dependency from the platform interface layer:
Option A: Move MethodChannel* out of *_platform_interface (In-Place Pure Dart)
- Move
MethodChannelFirebase(package:flutter/services.dart) fromfirebase_core_platform_interfaceinto the app-facingfirebase_corepackage (or a dedicatedfirebase_core_method_channelsubpackage). - Remove
flutter: sdk: flutterandenvironment: flutter:fromfirebase_core_platform_interface/pubspec.yaml. - Pros: Zero new packages;
*_platform_interfacebecomes 100% pure Dart immediately. - Cons: Technically a breaking change for external consumers or test suites that directly instantiate
MethodChannelFirebasefromfirebase_core_platform_interface(requires scheduling for the next major version bump).
Option B: Extract Pure-Dart Leaf Package (package:firebase_common / *_interface)
- Extract pure-Dart platform contracts and shared domain models (
FirebaseAppPlatform,FirebaseOptions,FirebaseException,Timestamp,GeoPoint, etc.) into a zero-dependency pure-Dart package (e.g.package:firebase_common). - Have
*_platform_interfacere-export these types alongsideMethodChannel*, while*_webpackages depend directly on the pure-Dart package. - Pros: 100% backwards-compatible; requires no major version bump to existing
*_platform_interfacepackages; enables code sharing with server-sidefirebase-admin-dart. - Cons: Introduces a new leaf package to publish and maintain in the monorepo.
Acceptance Criteria
- Select preferred direction (Option A vs. Option B) for decoupling
MethodChannel*(package:flutter/services.dart) from the pure-Dart interface layer. - Confirm whether pure-Dart platform interfaces should standardize exclusively on
FirebaseExceptionrather than catching/throwingPlatformException.
- Lingua principale
- Dart
- Stelle
- 9.3k
- Fork
- 4.1k
- Merge medio
- 2g 8h
- PR unite (30g)
- 46
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di firebase/flutterfire
-
[firebase_auth]: authStateChanges() never emits null when the user is force-signed-out before the stream is listened to (iOS, macOS, Android)Forse già presa @JulianPscheid l’ha presa 1 giorno fa. ApertaNeeds Attention platform: android platform: ios platform: macos plugin: auth reproduced type: bug
Difficoltà 4/5 1-2 giorni Idoneità per principianti 15/100
firebase/flutterfire#18796 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
blocked: customer-response Needs Attention platform: ios plugin: messaging type: bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
firebase/flutterfire#18776 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[📚] Remote Config Windows Support still N/A on ReadmeForse già presa @nightcityblade l’ha presa 7 giorni fa. Apertablocked: customer-response good first issue Needs Attention platform: windows plugin: remote_config type: documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 30/100
firebase/flutterfire#18763 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[cloud_firestore]: a snapshots() listener cancelled while it registers is never removed nativelyForse già presa @chiliec l’ha presa 19 giorni fa. ApertaNeeds Attention platform: android platform: ios platform: macos plugin: cloud_firestore reproduced type: bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
firebase/flutterfire#18724 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[firebase_storage] Windows native crash in upload progress callback, sink ownership and thread dispatchForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertablocked: flutter platform: windows plugin: storage reproduced type: bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
firebase/flutterfire#18664 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di firebase/flutterfire
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: The daily reminder keeps its old language after the app language changesForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabacklog:low bug localization
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
simonoppowa/OpenNutriTracker#1366 ·
I maintainer di solito rispondono entro 1 giorno
-
Mobile reading view shows a sender without display name as "<[email protected]>" with angle bracketsApertaai-driven-qa bug Cosmetic
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
linagora/tmail-flutter#4999 ·
I maintainer di solito rispondono entro 1 giorno
-
waiting for response
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 72/100
flutter/flutter#194381 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
newrelic/newrelic-flutter-agent#243 · 3 commenti ·