Вместо того, чтобы использовать файлы, вы должны использовать поддержку активов Flutter.Он предназначен для обработки любых ресурсов, которые вы объявили в своем файле pubspec.
Это выглядело бы примерно так, если бы использовалось из виджета с состоянием / без сохранения состояния:
Future<ByteData> loadFile(context) async {
AssetBundle bundle = DefaultAssetBundle.of(context).bundle;
try {
return await bundle.load("path/to.file");
} catch (e) {
print("Failed to load file because of $e");
return null;
}
}
И вы бы позвонилиэто откуда угодно, то есть initState или с FutureBuilder.Или вы можете использовать:
import 'package:flutter/services.dart' show rootBundle;
...
Future<ByteData> loadAsset() async {
return await rootBundle.load('assets/some.file');
}
Однако создается впечатление, что вы пытаетесь загрузить файл изображения, для которого есть особый случай.
Из документов :
Widget build(BuildContext context) {
// ...
return DecoratedBox(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('graphics/background.png'),
// ...
),
// ...
),
);
// ...
}
Все, что вам нужно сделать, это использовать AssetImage =).