В функции 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