#flutter
#flutter
Вопрос:
Я предполагаю, что у нас может быть одно приложение flutter, встроенное в другое, например, если у меня есть многоразовое меню с изображением, которое я хочу использовать в нескольких приложениях.
Итак, FlutterAppA ссылается на FlutterAppB и включен в pubspec.yaml FlutterAppA. FlutterAppB включает изображение в свою папку ресурсов, объявленную в файле pubspec, и определяет виджет, который отображает этот ресурс. Я хочу получить доступ к этому виджету из B (отображение виджета с активом)
B’s pubspec
flutter:
assets:
- assets/smile.gif
A’s pubspec
dependencies:
flutter:
sdk: flutter
flutter_app_b:
path: ../flutter_app_b/
Когда B запускается самостоятельно, отображается изображение.
class MyApp extends StatelessWidget {
Widget build(BuildContext context) => MaterialApp(
home: SmileAssetImage());
}
class SmileAssetImage extends StatelessWidget {
Widget build(BuildContext context) => Image.asset('assets/smile.gif');
}
однако при обращении к нему во FlutterAppA он не может найти ресурс и выдается исключение «невозможно загрузить ресурс».
Находится ли ресурс в правильном месте, должен ли он находиться в обеих папках ресурсов и / или в обеих папках pubspec?
Комментарии:
1. в pubspec A добавьте
assets: - ../flutter_app_b/assets/smile.gif
2. ах, я все еще получаю ошибку, pubspec компилируется, но я продолжаю получать ошибку во время выполнения, когда A пытается отобразить виджет в B (исключение «актив не может загрузить»). Если я удалю ресурс из B и включу его обычным способом в A, он отобразится в A, но, конечно, он больше не работает в B!
3. хм, теперь я, похоже, не могу заставить что-либо работать во flutter_app_b (после очистки flutter тоже)
Ответ №1:
Верно, похоже, что активы должны быть включены и объявлены в любом приложении, которое фактически запущено (если запущено A, то активы должны быть определены в приложении A, если запущено B, то активы должны быть в приложении B). flutter clean
Команда казалась необходимой
Комментарии:
1. если оба проекта находятся в одном каталоге, вы можете сохранить ресурс в этом каталоге и использовать как:
../smile.gif