Baseflow / Baseflow/flutter_cache_manager

JsonCacheInfoRepository: FormatException: Unexpected end of input (at character 1) ^

Ouverte Adaptée aux débutants
#450 9 commentaires 8 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.