【问题标题】:Static Functions in Dart - Calling just onceDart 中的静态函数 - 只调用一次
【发布时间】:2019-02-11 16:53:13
【问题描述】:

我创建了一个服务类来读取 JSON 文件并将其内容存储在一个类中。

  static getAllKurals() async {
    Map<String, dynamic> data = await _parseJsonFromAssets();
    return Response.fromJsonMap(data);
  }

  static Future<Kural> getRandomKural() async {
    Map<String, dynamic> data = await _parseJsonFromAssets();
    Response response = Response.fromJsonMap(data);

    return Future<Kural>.value(response.kurals[getRandomKuralNumber()]);
  }

我有几种这样的方法来处理数据。

问题是函数每次都会读取数据。是否可以让服务只读取一次文件并将它的 Map 用于所有功能?我不知道这在 Dart 中叫什么。

【问题讨论】:

    标签: dart flutter


    【解决方案1】:
      static Map<String, dynamic> _allKuralsCache;
      static getAllKurals() async {
        Map<String, dynamic> data = _allKuralsCache ?? await _parseJsonFromAssets();
        return Response.fromJsonMap(data);
      }
    

    或者也避免每次都调用Response.fromJsonMap(...)

      static Response _allKuralsCache;
      static getAllKurals() async {
        if(_dataResponseCache == null) {
          Map<String, dynamic> data = _dataCache ?? await _parseJsonFromAssets();
          _dataResponseCache = Response.fromJsonMap(data);
        }
        return _dataResponseCache; 
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多