Dart: функция работает в методе main, но в других виджетах она не работает - PullRequest
0 голосов
/ 23 января 2020

В функции have следующим образом:

class ParseYaml {
  Map _fileParsed;
  final String _pathConfigYamlFile = './assets/cfg/config.yaml';
  var _output;

  static ParseYaml _instance;

  ParseYaml._singletonConstructor() {
    loadConfigFile();
  }

  factory ParseYaml() {
    _instance ??= ParseYaml._singletonConstructor();
    return _instance;
  }

  loadConfigFile() {
    File file = File(this._pathConfigYamlFile);
    if (file.existsSync()) {
      this._fileParsed = loadYaml(file.readAsStringSync());
    } else {
      print('File not found.');
    }
  }

  String get(var key) {
    this._output = null;
    _fileParsed.forEach((k, v) {
      if (key == k) this._output = v;
    });
    return this._output.toString();
  }

  @override
  String toString() {
    return 'ParseYaml{_configFileParsed: $_fileParsed}';
  }
}

void main() {
  ParseYaml p = ParseYaml();
  print(p.toString());
}

Приведенный выше код прекрасно работает, когда я выполняю его в void_main (тот же файл). Однако, когда я запускаю указанный выше класс в каком-то другом виджете, например ниже:


    class Routes {
  static ParseYaml _props;
  static final String _viewTabs = _props.get("tabs");
  static final String _viewCategoryMeals = _props.get("categoryMeals");
  static final String _viewMealsDetails = _props.get("mealsDetails");
  static final String _viewFilters = _props.get("filters");

  Routes() {
    _props = ParseYaml();
  }

, он не работает. Согласно отладчику строка

'' 'File file = File (this._pathConfigYamlFile); if (file.existsSyn c ()) {'' 'не может найти файл в _pathConfigYamlFile.

Я понятия не имею, почему это происходит. Кто-нибудь может прояснить это? Thx

...