Baseflow / Baseflow/flutter_cache_manager
JsonCacheInfoRepository: FormatException: Unexpected end of input (at character 1) ^
- Langage dominant
- Dart
- Étoiles
- 809
- Forks
- 510
- Merge moyen
- 6 min
- PR mergées (30 j)
- 1
Description
## 🐛 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)
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez dans json_cache_info_repository.dart, au niveau de JsonCacheInfoRepository._readFile, vers la ligne 143, et examinez comment un fichier JSON de base de données vide parvient jusqu’à jsonDecode. Reproduisez ou couvrez le cas d’un fichier vide, puis vérifiez que l’initialisation se termine sans FormatException tout en préservant le chargement normal du JSON.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- dart, flutter
- Domaine
- mobile
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 68/100