Baseflow / Baseflow/flutter_cache_manager
Isolate imports and conditionally import libraries to make package platform-independent
- Lingua principale
- Dart
- Stelle
- 809
- Fork
- 510
- Merge medio
- 6m
- PR unite (30g)
- 1
Descrizione
## 🏗 Enhancement Proposal
Currently `flutter_cache_manager` is platform-independent, yet according to pub.dev, the package doesn't support web. This can be solved using conditionally importing `dart:io` dependent libraries.
`path_provider`, `file` and `sqflite` are platform-dependent and must only be imported/exported in *_io.dart files which will then be conditionally imported/exported.
`file` can be replaced with `cross_file` (as mentioned in [#321 (comment)](https://github.com/Baseflow/flutter_cache_manager/pull/321#issuecomment-854064553))
`path_provider` and `sqflite` are rather easy to isolate since they are imported only in cache_info_repositories which are selectively imported in config_*.dart files. The only problem is that `cache_info_repositories/cache_info_repositories.dart` is exported. @renefloor what can we do about this?
### Pitch
This will increase pub points which affect discoverability. Also, partially platform-dependent code will be separated and be easier to maintain.
### Checklist
- [ ] #339
- [ ] Store the config json data as a file on all platforms except the web, where web storage will be used to store this data
- [ ] Make the JSON implementation of cache info repository platform independent
- [ ] Migrate all instances to use the new JSON implementation
- [ ] If necessary, replace platform dependent dependencies with cross-platform implementations
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia tracciando gli import e gli export di path_provider, file e sqflite attraverso cache_info_repositories/cache_info_repositories.dart e i file config_*.dart. Esamina la discussione collegata #321 e la checklist, quindi determina come gli import condizionali e l’archiviazione multipiattaforma delle informazioni sulla cache dovrebbero coprire le piattaforme web e non web. Il lavoro è completato quando le librerie dipendenti dalla piattaforma sono isolate e il package supporta web in base all’obiettivo dichiarato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- dart, flutter
- Ambito
- mobile-dev
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 30/100