Baseflow / flutter_cache_manager

Generic cache manager for flutter
https://baseflow.com
MIT License
739 stars 426 forks source link

Help me to fix my old code to make it compatible with v 3.1.2 #327

Open Chetankumar-Akarte opened 3 years ago

Chetankumar-Akarte commented 3 years ago

💬 Questions and Help

My code was working fine while working on old version of flutter_cache_manager. Now I have upgraded to v3.1.2 Will you please help me to fix this piece of code so that it will be compatible with flutter_cache_manager v3.1.2

import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import '../../api/api_novel.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';

class NovelBookCacheModel extends BaseCacheManager{
  static const key = "libCacheNovelData";

  static NovelBookCacheModel _instance;

  factory NovelBookCacheModel() {
    if (_instance == null) {
      _instance = new NovelBookCacheModel._();
    }
    return _instance;
  }

  NovelBookCacheModel._() : super(key);

  Future<String> getFilePath() async {
    var directory = await getTemporaryDirectory();
    return p.join(directory.path, key);
  }

  Future<File> _getNovelPersistentCacheFile(String url, {Map<String, String> headers}) async {
    FileInfo cacheFile = await getFileFromCache(url);
    print(url);
    if (cacheFile != null&&cacheFile.file!=null) {
      return cacheFile.file;
    }else {
      removeFile(url);
      try {
        var download = await webHelper.downloadFile(url, authHeaders: headers);
        return download.file;
      } catch (e) {
        return null;
      }
    }
  }

  Future<String> getCacheChapterContent(String novelId, String chapterLink) async{
    File targetFile = await _getNovelPersistentCacheFile(NovelApi.CHAPTER_CONTENT+novelId+'&link='+chapterLink);
    print(targetFile);
    if (targetFile == null) {
      return null;
    } else {
      Uint8List bytes = await targetFile.readAsBytes();
      return utf8.decode(bytes, allowMalformed: true);
    }
  }
}