Я пытаюсь загрузить файл json в класс, расширяющий SearchDelegate, для поиска по его содержимому.
У меня есть способ загрузить этот файл:
Future<void> loadCountryData() async {
try {
String data = await DefaultAssetBundle
.of(context)
.loadString("assets/data/countries.json");
_countries = json.decode(data);
} catch (e) {
print(e);
}
}
К сожалению, для этого требуется Buildcontext (контекст), который, по-видимому, доступен только в методах сборки SearchDelegate (например, buildActions, buildLeadings и т. Д.), Но не снаружи, как, например, в конструкторе.
https://docs.flutter.io/flutter/material/SearchDelegate-class.html
Поскольку методы сборки @override xy в SearchDelegate вызываются при каждом изменении в поле поиска, я загружаю свой файл снова и снова, что, конечно, не идеально.
Я хочу загрузить свой файл только один раз в начале.
Есть ли способ получить некоторый контекст получения по умолчанию, который я мог бы использовать, например, в конструкторе SearchDelegate. Как в андроиде (если я правильно помню)?
Или я могу загрузить файл ресурсов без .of(context)
?