#flutter #dart #svg #assets
#трепетание #dart #svg #активы
Вопрос:
Я пытаюсь использовать пакет flutter_svg для загрузки некоторых значков .svg.
class _MyHomePageState extends State<MyHomePage> {
final String iconPath = "assets/icons/adept.svg";
...
}
Я добавил assets/
папку, содержащую icons/
папку, в pubspec.yaml
файл:
assets:
- assets/
И когда я пытаюсь загрузить значок внутри моего тела:
body: Center(
child: Container(
child: LimitedBox(
child: SvgPicture.asset('iconPath', color: Colors.black, width: 100, height: 100,),
maxHeight: 100,
maxWidth: 100,
)
)
),
Я получаю эту трассировку стека, невозможно загрузить ресурс: assetName,
I/flutter (10154): ══╡ EXCEPTION CAUGHT BY SVG ╞═══════════════════════════════════════════════════════════════════════
I/flutter (10154): The following assertion was thrown resolving a single-frame picture stream:
I/flutter (10154): Unable to load asset: iconPath
I/flutter (10154):
I/flutter (10154): When the exception was thrown, this was the stack:
I/flutter (10154): #0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:223:7)
...
I/flutter (10154): Picture provider: ExactAssetPicture(name: "iconPath", bundle: null, colorFilter: null)
I/flutter (10154): Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#153a9(), name: "iconPath",
I/flutter (10154): colorFilter: null)
I/flutter (10154): ════════════════════════════════════════════════════════════════════════════════════════════════════
Пожалуйста, объясните мне, чего мне не хватает?
Комментарии:
1. Попробуйте использовать
SvgPicture.asset('assets/icons/adept.svg')
.2. @Andrej спасибо, что указали на ошибку, которую я не заметил, как вы можете видеть в приведенном ниже ответе, я должен включить
- assets/icons/
в файл pubspec.yaml, у меня сложилось впечатление, что все, что мне нужно было сделать, это добавить родительскую папку, и все последующие папки будут автоматическивключено, чего не было, странно.3. Работает ли это сейчас?
4. @Andrej да, спасибо.
Ответ №1:
Вы изменили приведенный ниже код?
assets:
- assets/
- assets/icons/
body: Center(
child: Container(
child: LimitedBox(
child: SvgPicture.asset(iconPath, color: Colors.black, width: 100, height: 100,),
maxHeight: 100,
maxWidth: 100,
)
)
),
Комментарии:
2. Пожалуйста, проверьте комментарий на официальном сайте ‘ flutter.dev/docs/ development/ui / assets-and-images ‘.
3. Включаются только файлы, расположенные непосредственно в каталоге, если в подкаталоге нет файлов с таким же именем (см. Варианты ресурсов). Чтобы добавить файлы, расположенные в подкаталогах, создайте запись для каждого каталога.
Ответ №2:
просто выполните 3 действия: запустите эту команду в терминале: flutter clean.
и в android Studio перейдите к файлу и выберите: Недействительные кэши и перезапуск.
затем снова получите зависимости с помощью этой команды: flutter pub get