Baseflow / Baseflow/flutter_cache_manager
JsonCacheInfoRepository: FormatException: Unexpected end of input (at character 1) ^
- Lingua principale
- Dart
- Stelle
- 809
- Fork
- 510
- Merge medio
- 6m
- PR unite (30g)
- 1
Descrizione
## 🐛 Bug Report
occasionally this error is generated when initializing CacheManager with JsonCacheInfoRepository
```
Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: FormatException: Unexpected end of input (at character 1)
^
at .jsonDecode(dart:convert)
at JsonCacheInfoRepository._readFile(json_cache_info_repository.dart:143)
at JsonCacheInfoRepository.open(json_cache_info_repository.dart:40)
at new CacheStore.(cache_store.dart:34)
```
This happens when the {databaseName}.json file is created but empty and jsonString = ""
```
JsonCacheInfoRepository.dart: _readFile()
final json = jsonDecode(jsonString) as List;
```
A possible solution would be to check that the file is not empty before decoding the json
```
if (await file.exists() && await file.length() > 0) {
try {
final jsonString = await file.readAsString();
final json = jsonDecode(jsonString) as List;
```
> note: I don't know why the json file is empty and not with an empty list []
### Expected behavior
no error
### Configuration
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.16.1, on Microsoft Windows [Versi¢n 10.0.22631.3296], locale es-CL)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2022 17.8.2)
[√] Android Studio (version 2022.3)
[√] VS Code (version 1.87.2)
[√] Connected device (4 available)
[√] Network resources
• No issues found!
**Version:** 3.3.1
**Platform:**
- [ ] :iphone: iOS
- [x] :robot: Android 13 (AP I33)
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Start in json_cache_info_repository.dart at JsonCacheInfoRepository._readFile, around line 143, and inspect how an empty database JSON file reaches jsonDecode. Reproduce or cover the empty-file case, then verify initialization completes without a FormatException while preserving normal JSON loading.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- dart, flutter
- Ambito
- mobile
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 68/100