Я использовал flutter_svg: ^0.18.0 для использования изображений svg в своем проекте. Но я не могу найти правильный способ изменить его размер.
Вот мой код
body: SafeArea(
child: Center(
child: SvgPicture.asset('assets/images/morelights.svg'),
),
),
Редактировать: Вы можете использовать SizedBox, чтобы легко добиться этого:
SizedBox(
width: 100.0,
height: 150.0,
child: SvgPicture.asset('assets/images/morelights.svg',),
)
Оригинальный ответ:
Вы можете указать высоту и ширину в самом конструкторе ассетов:
SvgPicture.asset('assets/images/morelights.svg', height: 100, width: 150)
Прочитайте все доступные свойства в этом документе: SvgPicture.asset
Вы можете обернуть виджет SvgPicture с помощью IconButton.
IconButton(
onPressed: (){},
icon: SvgPicture.asset(
icDate,
height: 24,
width: 24,
),
),
Я думаю, что это странный способ обернуть SvgPicture в IconButton с пустой функцией onPressed.
Я нашел решение для этого :)
Шаги
Примечание. Вы также можете использовать виджет IconButton. Контейнер работает лучше в моем случае :)
Пример
Center виджет помог мне
Оберните его в виджет Container, так как SvgPicture.asset() всегда будет принимать полную доступную высоту или ширину родителя. вы можете изменить высоту и ширину виджета Container, чтобы получить желаемый размер для вашего SVG.
Container(
child: SvgPicture.asset('assets/images/morelights.svg'),
height: 100,
),
вам просто нужно использовать свойства width и height изображения svg.
SvgPicture.asset(
'assets/images/bm-icon1.svg',
width: 18.0,
height: 18.0,
),
Ключевой совет — использовать атрибут fit следующим образом:
SvgPicture.asset(
'assets/svg/notification.svg',
height: 5, width: 5,
fit: BoxFit.scaleDown
)
Это было единственное решение, которое сработало для меня. Спасибо!
Работал на меня. Пропустил fit: BoxFit.scaleDown.
работал только этот!
Вы можете использовать параметры height и width файла SvgPicture.asset:
Center(child: SvgPicture.asset(icon, height: 20, width: 20))
Я нашел решение случайно. Оберните SvgPicture виджетом Container и добавьте выравнивание.
Таким образом, вы можете свободно изменять ширину и высоту SvgPicture.
Container(
height: 100,
width: 100,
alignment: Alignment.center, // <---- The magic
padding: const EdgeInsets.all(12),
child: SvgPicture.asset(
'assets/icons/svg-image.svg',
semanticsLabel: 'Image',
height: 50,
width: 50,
),
),
Надеюсь, это сработает в вашем случае
Вы можете обернуть виджет SvgPicture.asset с помощью IconButton. Это свойство имеет поведение, позволяющее перезаписать эту проблему. пример кода приведен ниже.
IconButton(
icon: SvgPicture.asset('assets/svg_images/ic_plane.svg',
color: const Color(0xffFF5D2A),
height: 20,
width: 20,
), onPressed: () { },
),
Изображения SVG спроектированы так, чтобы иметь динамический размер в зависимости от того, в каком представлении оно установлено, вам нужно установить размеры для дочернего элемента, на котором размещен сам SVG.